我喜欢在我的 Nginx 服务器中处理不同的子域名,这是我的配置文件(部分)
server {
listen 80 default_server;
listen 443 default_server ssl;
include ssl/mysite.conf;
server_name default_server;
rewrite ^(.*)$ https://mysite.com$1 permanent;
正如你所看到的,所有请求sub-domain.mysite.com/query是重定向到mysite.com/query总是在https。我希望仅当子域名不同于字符串1和字符串2。 所以:
string1.mysite.com/query ---> https://string1.mysite.com/query
foo.mysite.com/query ---> https://mysite.com/query
答案1
您可以像 AD7six 建议的那样,为不同的主机名指定不同的服务器块。
对于您来说,我会编写 2 个服务器块,一个用于 string1.mysite.com 和 string2.mysite.com,另一个不带 server_name 过滤器以匹配所有其他请求。
像这样:
server {
listen 80 default_server;
listen 443 default_server ssl;
include ssl/mysite.conf;
rewrite ^(.*)$ https://mysite.com$1 permanent;
...
}
server {
listen 80;
listen 443 ssl;
include ssl/mysite.conf;
server_name string1.mysite.com string2.mysite.com;
...
}
server_name 指令文档非常好,可以帮助您解决此类问题。 http://nginx.org/en/docs/http/server_names.html