Nginx
nginx proxy_pass 到 https
所以我想將請求代理傳遞到 https 後端伺服器,但是,每次我嘗試使用 https:// 配置的後端重新載入 nginx 伺服器時,都會收到以下錯誤:
nginx: [emerg] https protocol requires SSL support
這是 nginx 配置
server{ listen 8080; root /opt/nginx_1.17.0/nginx_ok/html; server_name www.frontedndomain.com; index index.php index.html; location /health-monitor/ { add_header Custom-Header test; } location ~* ^\/([a-z][a-z]\/)?abc\/?(.*)? { error_log /opt/nginx_1.17.0/nginx_ok/logs/proxy_error.log; add_header X-query-string $is_args$query_string; resolver 0.0.0.0; resolver_timeout 15s; proxy_pass https://backenddomain.com; proxy_ssl on; proxy_http_version 1.1; proxy_set_header Accept-Encoding ""; proxy_set_header Cache-Control no-cache; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header X-Real-IP $remote_addr; subs_filter_types *; } }
最初我為原始碼建構了 nginx,這是 nginx -V 的輸出
nginx 版本: nginx/1.16.0 由 gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 建構 配置參數: –prefix=/opt/nginx_1.17.0/nginx_ok/ –sbin-path=/ opt/nginx_1.17.0/nginx_ok/sbin/nginx –with-openssl=/opt/nginx_1.17.0/openssl-1.1.1c/ –add-module=/opt/nginx_1.17.0/ngx_http_substitutions_filter_module/ –with-zlib =/opt/nginx_1.17.0/zlib-1.2.11/
有人可以請概述我在此配置中缺少的內容。我還想將查詢字元串轉發到後端。
通過添加以下指令解決了該問題
proxy_ssl_server_name 開啟;
這允許請求由上游端點的證書 SNI 中指定的伺服器處理。
您正在偵聽沒有 SSL (http) 的埠 8080,並嘗試代理到埠 443 (https) 上啟用 SSL 的主機。如果這行得通,它基本上會使加密變得毫無意義,因為它只會在您的一端加密,而不是在數據包傳輸到您的客戶端時加密。解決方案是確保您為相關埠安裝了證書並啟用了 ssl,並且任何 proxy_pass 都不會從未啟用 ssl 的埠轉發到啟用 ssl 的埠。