nginx 转发https后网址变成https://localhost

nginx 转发https后网址变成https://localhost

题目来源及自己的思路

我的需求是将80访问转发到https访问
没有在nginx.conf中配置主机配置,通过default.conf与其他配置文件实现,一个网站一个配置文件

相关代码

下面是default.conf的配置内容

server {
    listen 80;
    server_name   localhost; #这里写域名
    return 301 https://$server_name$request_uri;
}

server {
    listen       443 ssl default_server;
    server_name  localhost;
    ssl_certificate     /etc/nginx/SSL/baidu.top.crt;#证书存放位置,注意这里是Docker容器镜像中的路径,不是宿主机的
    ssl_certificate_key /etc/nginx/SSL/baidu.top.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

下面是网站本身的独立配置文件

server {
    listen        443;#监听端口为443,
    server_name   wiki.baidu.top; #这里写域名
    
    location / { 
        proxy_pass   http://localhost:7008; 
        index  index.html index.htm;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header x-wiz-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

我头秃了

问题已经解决,最终是用如下解决的
return 301 https://$host$request_uri;
而不是用
return 301 https://$server_name$request_uri;
我没搞明白这是为什么

阅读 5.6k
1 个回答

http 和 https 访问有很大不同,不要用 proxy 代理,直接 301 跳转就好了。你把 https 访问配置好,然后 http 用下面的配置跳转。

server {
    if ($host = yourdomain.com) {
        return 301 https://$host$request_uri;
    }

    listen 80;
    listen [::]:80;

    server_name yourdomain.com;
    return 404;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题