我创建了一个分期子域名,例如 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/
希望这对某人有帮助。