nginx 将 http 转换为 https

nginx 配置中想将 http 请求自动转换为 https,搜到N个方案都是下面这样的解决方法,不过我怎么试验失败呢?
转https.png

阅读 10.3k
4 个回答
server {
    listen      80;
    server_name www.xxx.com;
    return 307 https://www.xxx.com$request_uri;
}

server {
    listen      80;
    listen 443 ssl;
    server_name www.xxx.com;

    location / {
        root /mnt/www/xxx;
        index index.htm index.html;
    }

    location /xxx {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:20000;
    }
}

rewrite 那行的$1nginx解析不出,所以重定向到 https://x.x.com,然后你https下 / 没有配置,所以不通。

改用楼上的 $request_uri 就行。

ps:截图里域名暴露了,赶紧修改一下。

location / 
{
    return 301 https://$server_name$request_uri;
}

我个人网站nginx是这样配置https的
首先贴下个人网站地址 https://www.charmcode.cn/

server {
        listen       80;
        # 监听www前缀和无前缀的http请求
        server_name  www.charmcode.cn charmcode.cn;
        # 跳转到https
        return 301 https://www.charmcode.cn$request_uri;
}

server {
        listen       443 ssl;
        server_name  www.charmcode.cn;
        root         /usr/share/nginx/html;

        ssl_certificate "/etc/nginx/cert/www.charmcode.cn.crt";
        ssl_certificate_key "/etc/nginx/cert/www.charmcode.cn.key";
        # xxx其他转发请求配置
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏