用 Nginx 实现 https 转 http,方便本地调试

下载

nginx-1.14.0.zip

配置

conf/nginx.conf

    server {
        # 监听8080端口
        listen 8080;#不要占用 即将转发的80端口 。或者直接干掉这个server
        location / {
        }
    }

https 转 http

server {
        listen       443 ssl;
        # 域名,实际情况下时,将这个改成域名 https://xx.cn
        server_name  xx.cn;
        ssl on;
        ssl_session_timeout 5m;        
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置        
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 
        # 证书位置
        ssl_certificate  ssl/server.crt;#配我们生成的 nginx-1.14.0/https/xx.cn/server.pem;
        ssl_certificate_key ssl/server.key;#配我们生成的 nginx-1.14.0/https/xx.cn/privkey.pem;
        location / {
            proxy_pass http://xx.cn;#这里的xx.cn 是我们需要转发的 ,配合 修改hosts文件 : 127.0.0.1  xx.cn
        }
    }

下面参考:搭建本地https环境

证书生成:

1. 使用openssl生成密钥privkey.pem:

openssl genrsa -out privkey.pem 1024/2038

2. 使用密钥生成证书server.pem:

openssl req -new -x509 -key privkey.pem -out server.pem -days 365

证书信息可以随便填或者留空,只有Common Name要根据你的域名填写。

以我的个人网站为例

Common Name (e.g. server FQDN or YOUR name) []: wuyanxin.com

也可以通过*.yourdomain.com来匹配你的二级域名

配置nginx

server {
    listen 443;
  server_name youdomain.com;

  ssl on;
    ssl_certificate /path/to/server.pem;
    ssl_certificate_key /path/to/privkey.pem;
  
  ...
}

验证配置,重启nginx

$ sudo nginx -t && sudo nginx -s reload

报错解决

出现了 [Unable to load config info from /usr/local/ssl/openssl.cnf ] 异常.然原来这是Unix的默认设置,没有办法,只好建文件[c:/usr/local/ssl],从网上下载openssl.conf,然后改为openssl.cnf,置于c:/usr/local/ssl目录下,好了

参考:

https://blog.csdn.net/lvye1221/article/details/53843607

https://www.cnblogs.com/amboyna/archive/2008/08/30/1280127.html