Nginx
如何獲得 ssl_preread_alpn_protocols 用於使用 nginx 1.14 的 acme-tls 請求?
我正在嘗試配置 Nginx 以支持 Let’s Encrypt with TLS-ALPN-01 using dehydrad。在他們的文件中,他們有以下內容告訴 Nginx 負載平衡將請求定向到可以提供 TLS-ALPN-01 挑戰的伺服器。這是 Nginx 配置:
stream { server { map $ssl_preread_alpn_protocols $tls_port { ~\bacme-tls/1\b 10443; default 443; } server { listen 443; listen [::]:443; proxy_pass 10.13.37.42:$tls_port; ssl_preread on; } } }
當我把它放在我的
/etc/nginx/nginx.conf
它抱怨流指令時。我發現一些資訊說要將此行添加到我的配置頂部:load_module /usr/lib/nginx/modules/ngx_stream_module.so;
這擺脫了那個抱怨,但是有了這個配置:
load_module /usr/lib/nginx/modules/ngx_stream_module.so; user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } stream { server { map $ssl_preread_alpn_protocols $tls_port { ~\bacme-tls/1\b 10443; default 443; } server { listen 443; listen [::]:443; proxy_pass 10.13.37.42:$tls_port; ssl_preread on; } } }
我收到這個錯誤
nginx: [emerg] "map" directive is not allowed here in /etc/nginx/nginx.conf:13 nginx: configuration file /etc/nginx/nginx.conf test failed
那麼我需要做什麼才能正確地讓它
map
工作呢?我必須載入另一個模組嗎?
我在另一個網站上找到了解決方案。
如果您想讓 nginx 將 ALPN 請求負載平衡到您的 ALPN 響應者,以及其他地方的正常 https 流量,您必須開始告訴您的普通 https 伺服器在備用埠上偵聽(即不是:443)。
按照指南,在我的所有伺服器聲明中,
/etc/nginx/sites-enabled
我都更改:443
為:3443
. 然後我更新了添加的配置:stream { map $ssl_preread_alpn_protocols $tls_port { ~\bacme-tls/1\b 10443; default 3443; } server { listen 443; listen [::]:443; proxy_pass 127.0.0.1:$tls_port; ssl_preread on; } }
現在一切正常,我可以在不停機的情況下生成/更新證書!