需要帮助修改https重定向

时间:2019-05-11 18:17:00

标签: nginx redirect https

我有一个使用nginx作为Web服务器的Debian 9 VM,并且在我的配置中有以下内容。

server {
    listen       80;
    server_name  www.example.com;
    return 301 https://$host$request_uri;
}

现在,如果我导航到example.com或www.example.com,则它将重定向到https://www.example.com

但是,如果我在地址栏中输入以下内容或类似内容:example.com/site/about,则它会尝试重定向到https://example.com/site/about(不带www),Chrome和Firefox警告我该网站没有有该链接的证书。

我正在使用CertBot。它的服务器配置包含:

listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

如何让example.com/site/about重定向到https://www.example.com/site/about

我相信最初我有一个if条件和一个正则表达式,但是我在nginx网站上看到了一个简化https重定向的提示,并且正在使用上面的代码。

1 个答案:

答案 0 :(得分:0)

您可以使用以下Nginx服务器版本:

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

它使用www还原https URL。另外,如果您有权访问名称服务器,则可以进行CNAME记录,将no-www重定向到www。