Laravel Forge - 通过裸 IP 而不是域名访问应用程序

Posted

技术标签:

【中文标题】Laravel Forge - 通过裸 IP 而不是域名访问应用程序【英文标题】:Laravel Forge - access app by naked IP instead of domain name 【发布时间】: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;
    ...

【问题讨论】:

【参考方案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() 之类的内容

【讨论】:

例如,当您的注册商出于任何原因暂停您的域时(我的情况...)

以上是关于Laravel Forge - 通过裸 IP 而不是域名访问应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Forge - Node.js Websocket 超时

我正在通过Laravel Forge建立数据库,并且很难连接到它。正在关注Laracast教程[保留]

TaskQueue.php 错误 - Laravel 5 & Forge

Forge + Git + Laravel 问题

Laravel PDOException SQLSTATE[HY000] [1049] 未知数据库 'forge'

markdown Laravel Forge