Nginx:将非 www 重定向到 www https

标签 nginx

我有下面的 nginx 配置,我正在尝试将所有内容重定向到 https://www无论输入什么,例如 http://example.com , http://www.example.comhttps://example.com .

我查看了许多关于 SO 的主题并尝试了几件事,但仍然被难住了,我永远无法获得 https://example.com重定向到 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 {
    }
}

最佳答案

做一个 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更多。

关于Nginx:将非 www 重定向到 www https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42228191/

相关文章:

javascript - 如何在 Nginx 上呈现 Sails css 和 js 文件

regex - Nginx 使用什么正则表达式引擎?

shell - 如果文本不存在,SED 脚本如何在行号处插入行?

linux - Ubuntu Nginx - Phpmyadmin 卡在登录状态

html - m3u8 文件可以有 mp4 文件 url 吗?

git - Apache 和 GitLab 在同一台服务器上

nginx - 仅有时如何在 nginx 中添加 header

ruby-on-rails - AWS EC2 Ubuntu 服务器上的 Rails 5 应用程序:Errno::ENOSPC:设备上没有剩余空间

ruby-on-rails - 无方法错误 : undefined method `url_for' for nil:NilClass

python - DRF始终返回 "Authentication credentials were not provided"