如何將https服務所在主機進行nginx配置,完成路由
如何將https服務所在主機進行nginx配置,完成路由。如以我自己曾今的部署環境為例。
第一步:將安全證書上傳至nginx服務器。如當前路徑下/app/opt/nginx/cert/;
第二步:nginx配置文件進行配置,添加以下模塊
upstream https_sso {
server 171.96.188.162:6078;//sso服務對應的主機和端口號
}
# HTTPS server
#
server {
listen 9061 ssl; //9091為訪問nginx的接口
server_name sso1.zjtelecom.com.cn;
ssl_certificate /app/opt/nginx/cert/server.crt; //安全證書所在路徑
ssl_certificate_key /app/opt/nginx/cert/server.key;
ssl_protocols TLSv1;#SSLv3;#TLSv1;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_connect_timeout 240;
proxy_send_timeout 240;
proxy_read_timeout 240;
# note, there is not SSL here! plain HTTP is used
proxy_pass https://https_sso;
}
}
在配這裏之前,sso所在的tomcat是已經配置支持https的。
第三步,重啟nginx ,便可以通過檢驗nginx配置是否成功
檢驗示例:配置nginx前訪問路徑:https://171.96.188.162:6078/login
配置nginx後,通過nginx路由訪問:https://171.96.188.160:9091/login
註意:nginx所在主機為171.96.188.160:9091
Nginx做proxy,後端基於rack時候丟失端口號的問題及解決方案
server {
listen
4567;
server_name
192.168.0.2;
location
/ {
proxy_set_header
Host $host:$server_port;
proxy_set_header
X-Real-IP $remote_addr;
proxy_set_header
REMOTE-HOST $remote_addr;
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass
http://backend_server;
}
}
問題產生的原因是: Nginx沒有正確的把端口信息傳送到後端,沒能正確的配置nginx。
proxy_set_header Host $host:$server_port; 這一行是關鍵。
如何將https服務所在主機進行nginx配置,完成路由