Nginx:将http://example.com和http://*.example.com重定向到https://example.com

时间:2015-03-18 15:05:13

标签: redirect ssl nginx

我只有example.com的SSL证书,并希望使用nginx将http://example.com和http://*.example.com重定向到https://example.com。我知道在没有包含所有子域的证书的情况下无法通过SSL重定向子域名,但至少,我应该能够重定向键入 www .example.com(端口80)的用户)到SSL主页。

我当前的nginx配置如下:

server {
        # This should catch all non-HTTPS requests to example.com and *.example.com
        listen 80;
        server_name example.com *.example.com;
        access_log off;
        return 301 https://example.com$request_uri;
}

server {
        listen 443 ssl;
        # Actual server config starts here...

请求http://example.com将被正确地重定向到https://example.com,而http://www.example.com会导致https://www.example.com(当然,浏览器会显示证书错误)。我认为它与server_name值的处理顺序有关,但我没有找到任何有关如何强制执行某个订单的信息。

2 个答案:

答案 0 :(得分:0)

尝试添加其他服务器{}

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

答案 1 :(得分:0)

尝试:

server_name  example.com  www.example.com  *.example.com;

直接从Nginx docs拍摄。