Nginx 运行但是不提供站点服务

我们最近在一台新机器上安装了 nginx 版本 1.17。 在 sites-available 中创建的配置被符号链接到 sites-enabled ,但 nginx 没有为任何域名提供服务。

关键在这里,nginx 使用不同的目录 conf.d 来存储一个各种各样的 default 配置。 此配置匹配所有传入请求并接管所有请求和响应的处理。

nginx 配置如何工作

Nginx 将位于 sites-available 目录中的配置保持为私有,并且不会将它们路由到 Internet。 将配置添加到 sites-enabled 的目录将使其公开可用。

Nginx 允许我们支持多个 location 的配置文件。 配置域的第二种方法:conf.d 目录。

这里的区别:位于 conf.d 目录中的任何文件都将被 nginx 提取并路由到 Internet。 如果想使域名不能访问到,则必须从 conf.d 文件夹中删除该域名的配置。


检查 nginx 配置

检查 /etc/nginx 中是否有包含 default 配置的 conf.d 目录。

如果存在 conf.d 目录,则应检查 nginx 的配置是否包含 sites-enabled 的文件夹:

$ nano /etc/nginx/nginx.conf  

我们对 nginx 的虚拟主机配置感兴趣。 Nginx 可能会在 conf.d 和 sites-enabled 目录中搜索配置。 根据顺序,nginx 可能会首先找到“gotta catch ’em all”配置。

我们的 nginx.conf 文件的内容可能如下所示:

user www-data;  
worker_processes auto;  
pid /run/nginx.pid;

events {  
        worker_connections 768;
}

http {  
        sendfile on;
        tcp_nopush on;

        ##
        # 虚拟主机配置
        ##
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;  # <-- 如果希望“sites-enabled”工作,请确保此行有效
}

如果我们将域的配置文件放置在 sites-available 和 sites-enabled 目录中,来自 conf.d 的默认配置可能会覆盖它们。