nginx學習筆記(一) 用nginx實現本地https請求轉http請求
阿新 • • 發佈:2018-08-10
error erro 需要 ror har file key media nginx代理
接到項目需求需要將一些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 http://localhost: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 http://a.com; } } include servers/*; }
其中a.com是我在本地hosts文件上做的一個本地映射(127.0.0.1 a.com)
驗證配置
重啟ngnix驗證配置是否成功
sudo nginx -t && sudo nginx -s reload
之前是在網上看到該命令,但實際中在我本地該命令並未生效。如果該命令不生效就先把nginx關閉後再重啟。
nginx -s stop
nginx
一點小坑
配置完成之後在訪問同一個https請求時總是會在奇數次(第一次,第三次……)報404,偶數次才成功。後面經過排查發現,在已經配置了80轉換到8080端口時還做了對8080端口的一些配置,如下圖。將該配置刪除後即可。
nginx學習筆記(一) 用nginx實現本地https請求轉http請求