Nginx不设置服务器名称可以吗?
我想在部署docker映像之前测试服务器 如果在nginx中设置了Nginx不设置服务器名称可以吗?,nginx,Nginx,我想在部署docker映像之前测试服务器 如果在nginx中设置了server\u name,当我进行测试时,它会重定向到server\u name中指定的url,我不希望发生这种情况 我还需要有重定向规则,例如 server { server_name www.example.kr; return 301 $scheme://example.kr$request_uri; } 那么,如何使测试服务器不重定向到realwww.example.com,并使www.exam
server\u name
,当我进行测试时,它会重定向到server\u name
中指定的url,我不希望发生这种情况
我还需要有重定向规则,例如
server {
server_name www.example.kr;
return 301 $scheme://example.kr$request_uri;
}
那么,如何使测试服务器不重定向到real
www.example.com
,并使www.example.com
重定向到example.com
?您可以设置一个IF检查主机名并将其重定向到real服务器,然后注释掉server\u name块并将其用作默认服务器(不确定它是否有意义,因为测试服务器和生产服务器之间的dns可能或应该有所不同)
配置可以是
server {
if ($host = www.example.com) {
return 301 http://$host$request_uri;
}
listen 80 default_server;
listen [::]:80 default_server;
#server_name www.example.com;
location / {
.. your stuff
}
}
很好的答案,只是评论说,即使这是一个有效且有效的答案,在nginx最佳实践中,最好限制使用“如果”:但这是一个完美有效且有效的答案。