Nginx
將 Nginx 配置為具有上游 SSL 的反向代理
我嘗試將 Nginx 伺服器配置為反向代理,以便它從客戶端接收到的 https 請求也通過 https 轉發到上游伺服器。
這是我使用的配置:
http { # enable reverse proxy proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for; upstream streaming_example_com { server WEBSERVER_IP:443; } server { listen 443 default ssl; server_name streaming.example.com; access_log /tmp/nginx_reverse_access.log; error_log /tmp/nginx_reverse_error.log; root /usr/local/nginx/html; index index.html; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_verify_client off; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers RC4:HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass https://streaming_example_com; } } }
無論如何,當我嘗試使用反向代理訪問文件時,這是我在反向代理日誌中遇到的錯誤:
2014/03/20 12:09:07
$$ error $$4113079#0:*1 SSL_do_handshake() 失敗(SSL:錯誤:1408E0F4:SSL 常式:SSL3_GET_MESSAGE:意外消息),同時 SSL 與上游握手,客戶端:192.168.1.2,伺服器:streaming.example.com,請求:“GET / publishers/0/645/_teaser.jpg HTTP/1.1",上游:" https://MYSERVER.COM:443/publishers/0/645/_teaser.jpg “,主機:“streaming.example.com”
知道我做錯了什麼嗎?
我發現是什麼錯誤,我需要添加
proxy_ssl_session_reuse off;
就我而言,我試圖反向代理 Cloudflare 背後的網站。我在
/var/log/nginx/error.log
. 我嘗試了很多解決方案,這個對我有用:proxy_ssl_server_name on;
是的,即使是 2019 年,現在一些服務仍然需要 SNI 來區分託管站點。