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

我想在部署docker映像之前测试服务器

如果在nginx中设置了
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最佳实践中,最好限制使用“如果”:但这是一个完美有效且有效的答案。