2017-02-14 18 views
7

Mam poniżej konfigurację nginx, próbuję przekierować wszystko do https://www niezależnie od tego, co przychodzi na przykład http://example.com, http://www.example.com lub https://example.com.Nginx: Przekierowanie nie-www do www https

Szukałem na wielu tematów na SO i próbowałem kilka rzeczy, ale nadal zakłopotany, nie mogę kiedykolwiek https://example.com przekierować do wzoru https://www !?

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

server { 
    listen  443 ssl; 

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 
    ssl_dhparam /etc/nginx/ssl/dhparams.pem; 
    ssl_session_timeout 30m; 
    ssl_session_cache shared:SSL:10m; 
    ssl_buffer_size 8k; 
    add_header Strict-Transport-Security max-age=31536000; 

    root   /usr/share/nginx/html; 

    # Load configuration files for the default server block. 
    include /etc/nginx/default.d/*.conf; 

    location/{ 
    } 

    error_page 404 /404.html; 
     location = /40x.html { 
    } 

    error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
    } 
} 

Odpowiedz

6

server Dodać jeden blok domyślny serwer i dać drugą server zablokować prawdziwą server_name.

server { 
    listen 80 default_server; 
    listen 443 ssl default_server; 

    ssl_certificate ...; 
    ssl_certificate_key ...; 
    return 301 https://www.example.com$request_uri; 
} 

server { 
    listen 443 ssl; 
    server_name www.example.com; 

    ssl_certificate ...; 
    ssl_certificate_key ...; 
    ... 
} 

Serwer domyślny dla https wymaga ważnego certyfikatu. Zakładając, że masz certyfikat wieloznaczny - większość instrukcji ssl_ może zostać przeniesiona do zewnętrznego bloku i odziedziczona przez oba bloki serwera. Na przykład:

ssl_certificate ...; 
ssl_certificate_key ...; 
ssl_...; 

server { 
    listen 80 default_server; 
    listen 443 ssl default_server; 
    return 301 https://www.example.com$request_uri; 
} 

server { 
    listen 443 ssl; 
    server_name www.example.com; 
    ... 
} 

Zobacz this document więcej.

Powiązane problemy