假设我有一对服务器,由于部署方式,需要使用相同的nginx.conf
。其中一台服务器位于staging.someserver.com
,另一台服务器位于www.someserver.com
。
我想要的是单个重写行或if条件,它会将域上的所有内容(主要是http上的www和非www,以及https上的非www)重定向到https://www.someserver.com/
,以及{http://staging.someserver.com/
1}}重定向到https://staging.someserver.com/
,但不会重定向到https://www.someserver.com/
。我怎么能这样做?
答案 0 :(得分:1)
这是关于Nginx配置的一个技巧:HTTP块的第一个服务器块将是“默认”配置。
因此,您可以在第一个服务器块中重定向所有内容,并使用您的www创建另一个服务器块。配置!
这是最佳解决方案。
答案 1 :(得分:-2)
我不知道这是否是最好的方法,但我想出了一些东西:
server {
listen 443 default deferred;
# ...
if ($host !~ (staging)|(www).*)
rewrite ^(.*) https://www.someserver.com$1 permanent;
}
}
server {
listen 80;
# ...
if ($host !~ staging.*) {
rewrite ^(.*) https://www.someserver.com$1 permanent;
}
if ($host ~ staging.*) {
rewrite ^(.*) https://staging.someserver.com$1 permanent;
}
}