【问题标题】:Freshly installed nginx not serving default page新安装的 nginx 不提供默认页面
【发布时间】:2021-11-25 07:04:09
【问题描述】:

我刚刚在一个新的 ubuntu 实例上安装了 nginx。看起来 nginx 正在运行,以下是进程:

root      2062  0.0  0.1  85868  1340 ?        Ss   01:13   0:00 nginx: master process /usr/sbin/nginx
www-data  2063  0.0  0.1  86212  1768 ?        S    01:13   0:00 nginx: worker process
www-data  2064  0.0  0.1  86212  1768 ?        S    01:13   0:00 nginx: worker process
www-data  2065  0.0  0.1  86212  1768 ?        S    01:13   0:00 nginx: worker process
www-data  2066  0.0  0.1  86212  1768 ?        S    01:13   0:00 nginx: worker process
ubuntu    2120  0.0  0.0  10460   932 pts/0    S+   01:34   0:00 grep --color=auto nginx

这里还有 sudo nstat -plnt

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1076/sshd       
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2062/nginx      
tcp6       0      0 :::22                   :::*                    LISTEN      1076/sshd       
tcp6       0      0 :::80                   :::*                    LISTEN      2062/nginx  

但是当我转到我的公共 IP 地址时(我没有配置任何站点),我的浏览器超时并且不显示默认的 nginx 页面。

nginx 日志中没有错误,sudo nginx -t 看起来很好。我按照一些 tuts 安装并启动它,但一切都说它应该立即提供默认主页。

这是我的 /etc/nginx/sites-enabled 中的内容

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
            try_files $uri $uri/ =404;
    }
}

【问题讨论】:

  • 您可以检查/etc/nginx/sites-available/default,如果该文件存在?如果是。打开它,检查根文件夹的位置(通常在/usr/share/nginx/html)。然后检查该位置是否存在。因为有时当 nginx 尝试创建文件夹和文件时,它会被拒绝
  • /etc/nginx/sites-available/default 与 /usr/share/nginx/html 中的 index.html 文件一起存在 - 所以那里的一切看起来都很好。奇怪的是我根本没有得到服务器的任何响应(ERR_CONNECTION_TIMED_OUT)。我可以 ping 通服务器
  • 仔细检查您是否在实例或防火墙中选择了“允许 HTTP 流量,允许 HTTPS 流量”选项

标签: ubuntu nginx


【解决方案1】:

我在 Digital Ocean 上设置了一个新服务器并按照他们的教程(包括启用简单防火墙)后遇到了这个问题。但是教程没有提到启用http和https流量,这是你必须做的!

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ubuntu-20-04-server-on-a-digitalocean-droplet

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04

sudo ufw allow http
sudo ufw allow https

【讨论】:

    【解决方案2】:

    我也有同样的问题。解决方案是将入站规则添加到实例的安全组。允许安全组中的 HTTP 和 HTTPS 流量。

    【讨论】:

      【解决方案3】:

      如果上述答案不起作用,请确保您拥有包含默认 index.html 文件的默认 /var/www/html 文件夹。

      原因: 发生的情况是路径中的默认配置文件:/etc/nginx/sites-available/var/www/html/index.html 调用默认文件,如果不存在(可能已删除)会引发未找到错误。

      修复:

      • 确保添加默认文件(在 Ubuntu 中名称通常为:index.nginx-debian.html
      • 完全删除 Nginx 并进行全新安装。全新安装将再次创建默认文件,访问 localhost/ServerIP 将提供默认 Nginx 页面。

      这对我来说就像一个魅力!

      【讨论】:

        【解决方案4】:

        哇 - 真是一团糟!这个问题让我为 4d 所以超级大的 Thx 向社区发布答案。

        我在使用 GCP 时遇到了这个问题。我可以创建一个基于以前图像工作的 Web 实例,但是当我尝试从头开始创建 Web 实例(域 - 虚拟机实例 - 区域)时,我无法进入 nginx 默认页面。我不断得到:

        This site can’t be reached
        <domainname.ext> took too long to respond.
        ERR_CONNECTION_TIMED_OUT 
        

        使用上面的帖子很明显,我需要同时启用 http 和 https 流量。然后只需编辑 VM 实例并单击防火墙下的允许 HTTP 流量框

        我猜逻辑是,在您安装证书之前,所有流量都是(默认情况下)http 流量,因此两者都需要被允许。

        他们从此过上了幸福的生活

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-27
          • 1970-01-01
          相关资源
          最近更新 更多