【问题标题】:Laravel Forge - access app by naked IP instead of domain nameLaravel Forge - 通过裸 IP 而不是域名访问应用程序
【发布时间】:2020-05-14 20:31:24
【问题描述】:

我有一个用于生产的 laravel 应用程序(使用 Laravel Forge 和 Digital Ocean droplet)。

我可以通过 www.domain.com 访问该应用,但如果我尝试使用服务器的 IP,我会得到 404 (nginx)。

如何使用 IP 地址访问应用程序?

非常感谢您的帮助

编辑:

这是我在 Laravel Forge 上的 Nginx 配置:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name domain.com;
    root /home/forge/domain.com/public;
    ...
}

【问题讨论】:

    标签: laravel nginx forge


    【解决方案1】:

    这是因为nginx 在找不到匹配域时搜索包含default_server 的配置块。您可以删除默认的default_server 标签(/etc/nginx/enabled-sites/default)并将其移动到您要默认显示的站点的配置中:

    server {
        listen      80 default_server;
        server_name example.net www.example.net;
        ...
    }
    

    您的服务器块已更新 default_server:

    server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2;
        server_name domain.com;
        root /home/forge/domain.com/public;
        ...
    }
    

    重启nginx之前一定要编辑默认配置去掉default_server标签,default_server不允许有两个配置块。可以使用nginx -t验证配置

    更多信息请访问nginx documentation

    【讨论】:

    • 好的,谢谢。那么我应该在 IP 地址中添加哪一行? (对不起,我不是很擅长 nginx 配置...)
    • 无需添加 IP 地址,只需在您提供的服务器块中的第一个 listen 443 ssl http2 后附加 default_server 即可。 @chartalex
    • 你用systemctl reload nginx@chartalex重启nginx了吗
    • 很遗憾没有:(
    【解决方案2】:

    你为什么要从裸 ip 访问你的服务器?

    Nginx 返回 404,因为它在您的服务器上找不到请求的域。

    如果您查看文件夹结构,您的项目文件夹对应于您的站点域。它会根据您的域名将您重定向到正确的文件夹。

    您可以创建一个默认项目,以便在通过 ip 请求时向您显示 phpinfo() 之类的内容

    【讨论】:

    • 例如,当您的注册商出于任何原因暂停您的域时(我的情况...)
    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多