如何强制重定向www到非www的SSL子域

问题描述:

如果有人愿意向我提供关于如何让NGINX发挥出色的技巧,我会很高兴。我想重定向https://www.subdomain.domain.com,但不幸的是,现在还不适合我。如何强制重定向www到非www的SSL子域

请注意以下几点设立NGINX,我在的/ etc/nginx的/网站可用/默认

server { 
    listen 443 ssl; 

    server_name subdomain.domain.com; 

    ssl_certificate /etc/letsencrypt/live/subdomain.domain.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/subdomain.domain.com/privkey.pem; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/ssl/certs/dhparam.pem; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-$ 
    ssl_session_timeout 1d; 
    ssl_session_cache shared:SSL:50m; 
    ssl_stapling on; 
    ssl_stapling_verify on; 
    add_header Strict-Transport-Security max-age=15768000; 

    server_name subdomain.domain.com; # Replace with your domain 
    root /home/dropshare/public_html; 
    index index.html index.htm; 
    client_max_body_size 10G; 

    location ~ /.well-known { 
      allow all; 
    } 
} 

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

server { 
    listen 443 ssl; 
    server_name subdomain.domain.com; 
    return 301 https://subdomain.domain.com$request_uri; 
} 
+0

我不明白,你已经尝试重定向'www.subdomain。 domain.com'? –

+0

无论如何,首先你**必须拥有有效的域名“www.subdomain.domain.com”的证书。 –

+0

你的配置文件或你的问题有点混乱。您在最后一个服务器块(我假定它是“www.subdomain.domain.com”)中的一个“服务器”块和“server_name subdomain.domain.com”中有'server_name'指令的重复,请编辑您的问题并澄清。 –

你的配置是无效的,由nginx的拒绝。

你有两个相同的虚拟服务器:

server { 
    listen 443 ssl; 

    server_name subdomain.domain.com; 
... 
server { 
    listen 443 ssl; 
    server_name subdomain.domain.com; 

,其中一人只是重定向到自身:

server { 
    listen 443 ssl; 
    server_name subdomain.domain.com; 
    return 301 https://subdomain.domain.com$request_uri; 
}