暂存子域名有效,但测试子域名在 nginx 上镜像父域名

暂存子域名有效,但测试子域名在 nginx 上镜像父域名

我创建了一个分期子域名,例如 example.com,它工作正常。后来我创建了测试.example.com并且它不提供其配置目录中的文件。它只是镜像父域。

在 DNS 管理器中,我创建了测试子域名就像分期然后我再次为 nginx 创建了一个与暂存相同的配置文件,删除了先前将 test.example.com 指向 127.0.0.1 的主机文件条目,重新启动了服务器但无济于事。

这里值得一提的是,我正在为父域使用 SSL 证书。因此,父域的服务器名称如下:

server {

    listen 443 ssl;
    server_name example.com www.example.com
 ...
}
...
...
server {
    listen 80;
    server_name  example.com www.example.com;
    return 301 https://$host$request_uri;
}

对于测试子域:

server {
    listen 80;
    server_name test.example.com
...
}

有人能帮我指出解决方案吗?我可能忽略了一些非常基本的东西。

答案1

您的服务器的行为就像新配置尚未生效一样。

一些nginx配置使用目录的符号链接sites-enabled

nginx无论何时更改配置,您都需要重新启动。

用于nginx -t测试配置文件的语法错误。如果正在运行的程序nginx无法重新启动,则它将继续使用旧配置。

用于nginx -T显示所有包含文件的完整配置,以确保正在读取新的配置片段。

每次更改配置之间清除浏览器缓存,nginx以避免错误的测试结果。

答案2

这是一个非常愚蠢的错误,但任何人都可能犯这样的错误。事实证明,这只是为 nginx vhosts 正确创建符号链接的问题。例如,如果我有一个名为 test 的配置文件,要创建符号链接,我会执行以下操作:

sudo ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/test

而不是这样:

sudo ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/

希望这对某人有帮助。

相关内容