我有一個Nginx服務器處理http請求,並向上遊的某些節點服務器進行代理傳遞,如果域名匹配其中一個啓用的站點,則所有數據包都重定向到一個節點服務器,只有當通道是SSL時,否則301到https版本:是否有可能讓上游服務器處理Nginx服務器後面的SSL證書?
server {
listen 80;
server_name something.com
return 301 https://$host$request_uri;
}
server {
listen 433;
server_name something.com;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location/{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000/;
proxy_redirect off;
}
}
所有的工作,但證書管理,SSL握手等都是由Nginx製作的。我希望讓每個節點服務器上游管理自己的SSL首選項,因此我不依賴Nginx來實現這一點。我的節點服務器已經支持https請求,但我不明白是否有可能告訴Nginx:
- 聽80,如果有事情做301做它的https版本。
聽433,不用擔心了SSL,只是代理通過一切爲localhost:3000
和節點服務器監聽端口3000處理SSL
如果您只有一個站點並且希望節點處理SSL,爲什麼不讓節點偵聽端口443? –
接受的答案不再準確:請參閱https://stackoverflow.com/questions/46412934/forward-https-traffic-thru-nginx-without-ssl-certificate/46413105 – fragmentedreality