2017-02-14 8 views
7

को गैर- www पुन: निर्देशित मैं अपने नीचे nginx config है, मैं की परवाह किए बिना https://www के लिए सब कुछ रीडायरेक्ट करने के लिए क्या उदाहरण http://example.com, http://www.example.com या https://example.com के लिए में आता है कोशिश कर रहा हूँ।Nginx: www https

मैंने एसओ पर कई विषयों को देखा है और कुछ चीजों की कोशिश की है लेकिन अभी भी स्टंप हो गया है, मुझे कभी भी https://example.comhttps://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 { 
    } 
} 

उत्तर

6

एक server ब्लॉक एक डिफ़ॉल्ट सर्वर बनाने और अन्य server ब्लॉक एक सच्चा 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 ...; 
    ... 
} 

https के लिए डिफ़ॉल्ट सर्वर कोई मान्य प्रमाणपत्र की आवश्यकता है। मान लें कि आपके पास वाइल्डकार्ड प्रमाण पत्र है - ssl_ कथनों में से अधिकांश को बाहरी ब्लॉक में स्थानांतरित किया जा सकता है और दोनों सर्वर ब्लॉक द्वारा विरासत में लिया जा सकता है। उदाहरण के लिए:

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

this document और देखें।