2015-07-21 16 views
6

w tej chwili używam stronę internetową w nginx/1.6.3 na centOS7Nginx SSL/Subdomeny/IP

Wszystko działa gładkie, z wyjątkiem niektórych przekierowań.

To właśnie mój plik .conf wygląda następująco:

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; 
} 

Co chciałbym osiągnąć są następujące scenariusze:

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 

Odpowiedz

1

Proszę sprawdzić uruchomiony z następujących config, to powinno działać.

#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

użyłem tego wzorca, aby rozwiązać podobny problem:

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

i tak dalej