繁体   English   中英

在Nginx中如何从http://www.*重定向到https:// *?

[英]How to redirect from http://www.* to https://* in Nginx?

因此,我正在尝试实现4件事:

  • 同时支持ip-v4和ip-v6
  • 支持letencrypt ssl证书(http中的acme-challenge位置)
  • 将www重定向到非www
  • 将http重定向到https

我想出了一个配置,但似乎无法正常工作。 尝试访问http://www.MY_DOMAIN.COM时出现“页面不存在”的信息 由于hsts设置,在访问过https非www版本一次之后,此方法可以正常工作。

请注意,无论有无www域,我都有ssl证书。

我怎样才能做到这一点/我在我的配置中做错了什么:

# HTTP server
#
server {
    listen [::]:80;
    server_name MY_DOMAIN.COM www.MY_DOMAIN.COM;

    location /.well-known/acme-challenge {
        root /var/www/letsencrypt;
        try_files $uri $uri/ =404;
    }

    location / {
        return 301 https://MY_DOMAIN.COM$request_uri;
    }
}
# HTTPS server
#
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.MY_DOMAIN.COM;

    ssl on;
    ssl_certificate         /etc/letsencrypt/live/www.MY_DOMAIN.COM/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/www.MY_DOMAIN.COM/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/www.MY_DOMAIN.COM/fullchain.pem;

    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 5m;
    ssl_stapling on;
    ssl_stapling_verify on;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    add_header Strict-Transport-Security "max-age=86400; includeSubDomains";

    return 301 https://MY_DOMAIN.COM$request_uri;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server ipv6only=on;
    server_name MY_DOMAIN.COM;

    ssl on;
    ssl_certificate         /etc/letsencrypt/live/MY_DOMAIN.COM/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/MY_DOMAIN.COM/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/MY_DOMAIN.COM/fullchain.pem;

    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 5m;
    ssl_stapling on;
    ssl_stapling_verify on;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    add_header Strict-Transport-Security "max-age=86400; includeSubDomains";

    root /var/www/MY_DOMAIN.COM;
    index index.html;
}

另外,我发现两个服务器块的复制粘贴性质不是很好。

正如@RichardSmith所指出的; 我没有听http:// www变体的ipv4版本。 因此,完全没有触发该裁决。

解决此问题后,安装程序开始工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM