2017-02-14 20 views
7

Tôi có cấu hình nginx dưới đây, tôi đang cố chuyển hướng mọi thứ đến https://www bất kể những gì có trong ví dụ http://example.com, http://www.example.com hoặc https://example.com.Nginx: Chuyển hướng không www đến www https

Tôi đã xem xét nhiều chủ đề về SO và đã thử một vài điều nhưng vẫn còn bối rối, tôi không bao giờ có thể nhận được https://example.com để chuyển hướng đến mẫu 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 { 
    } 
} 

Trả lời

6

Thực hiện một server khối một máy chủ mặc định và cung cấp cho các khác server chặn một sự thật 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 ...; 
    ... 
} 

Máy chủ mặc định cho https yêu cầu chứng chỉ hợp lệ. Giả sử bạn có chứng chỉ ký tự đại diện - hầu hết các câu lệnh ssl_ có thể được chuyển vào khối ngoài và được kế thừa bởi cả hai khối máy chủ. Ví dụ:

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

Xem this document để biết thêm.

Các vấn đề liên quan