2015-07-21 83 views
6

此刻我运行一个网站在 的nginx/1.6.3centOS7Nginx的SSL /子/ IP重新定向

一切运行平稳,除了一些重定向。

这是我的.conf文件是什么样子:

server { 
    listen 443 ssl spdy default deferred; 
    server_name .example.com; 

    ... more configs 

    } 


server { 
    listen 80; 
    server_name .example.com; 
    return 301 https://example.com$request_uri; 
} 

我想什么来实现有以下几种情况:

user visits in browser    | this should happen 
------------------------------------|------------------------------------- 
https://example.com$request_uri  | Just deliver content 
https://*.example.com$request_uri | 301 https://example.com$request_uri 
https://123.123.123.123$request_uri | 301 https://example.com$request_uri 
http://example.com$request_uri  | 301 https://example.com$request_uri 
http://*.example.com$request_uri | 301 https://example.com$request_uri 
http://123.123.123.123$request_uri | 301 https://example.com$request_uri 

回答

1

,请查看与下面的配置运行,这应该工作。

#This would serve all your content. 
server { 
    listen 443 ssl spdy default deferred; 
    server_name example.com; 

    ... more configs 

} 

#https calls to anything except example.com would be redirected here  
server { 
    listen 443 ssl spdy default deferred; #(Can also use only : "listen 443;") 
    server_name *.example.com 123.123.123.123; 
    return 301 https://example.com$request_uri; 
} 

#All port 80 redirection to https://example.com 
server { 
    listen 80; 
    server_name example.com *.example.com 123.123.123.123; 
    return 301 https://example.com$request_uri; 
} 
0

我用这个模式来解决类似的问题:

server_name ~^(?<subdomains>.+\.)?(?<domain>[^.]+\.[^.]+)$; 
if ($domain != 'example.com') { 
     rewrite ^/(.*)$ http://${subdomains}example.com/$1 permanent; 
} 

等等