接到项目需求需要将一些https请求利用nginx代理到http接口上,因此要在本地上搭环境进行测试,现在将该过程记录一下。
生成证书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要根据你的域名填写。如xxx.com,或使用*.xxx.com匹配二级域名。
配置ngnix由于我本地的Spring boot项目是跑在8080端口的,因此在ngnix配置上我还做了一层80到8080端口到转换。
完整ngnix配置如下。
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name a.com; location / { proxy_pass :8080; } } # HTTPS server # server { listen 443 ssl; server_name a.com; #证书位置 ssl_certificate /data/server.pem; # 路径为证书生成的路径 ssl_certificate_key /data/privkey.pem; # 路径为证书生成的路径 # ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; #协议配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 转发到http location / { proxy_pass ; } } include servers/*; }