帶有透明埠/代理的 Nginx 映射(?)
我不完全確定我在這裡尋找的是什麼,所以我無法有效地搜尋我的答案。
我正在為 LetsEncrypt 的 TLS-ALPN 挑戰使用脫水。我正在使用 nginx 託管服務
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; } } server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; } server { listen 3443 ssl; listen [::]:3443 ssl; server_name wanderingwerners.com www.wanderingwerners.com; ssl_certificate /path/to/my/fullchain.pem; ssl_certificate_key /path/to/my/privkey.pem; index index.html; root /var/www/wanderingwerners.com/; }
這非常有效——我可以獲得零停機時間的新證書,並且我的網站可以訪問。但是,當我訪問我的頁面時,它工作正常。當我將滑鼠懸停在連結上時,它會顯示我https://www.wanderingwerners.com/a-beginning/
但是,點擊該連結會將我帶到https://www.wanderingwerners.com:3443/a-beginning/
這是不可取的-我希望它顯示為普通的’ https://www.wanderingwerners.com/a-beginning/
我假設我在 nginx 中設置的東西是造成混亂的原因,但我並不肯定。
有沒有一種方法可以更新我的 nginx 配置以仍然允許脫水伺服器工作,但也告訴瀏覽器這
:3443
不是他們應該連接的真正內容?(或者至少不要在地址欄中顯示)更新
當我這樣做
curl https://www.wanderingwerners.com/a-beginning
時,它會給我一個 301 重定向。我的 nginx 配置在這里肯定發生了一些事情。另一個更新
當我這樣做時
curl https://www.wanderingwernerx.com/a-beginning/
,它工作得很好,所以看起來它正在用尾隨做某事/
當您從 URL 中省略尾部斜杠時,您描述的重定向來自 nginx。你應該可以用
port_in_redirect off;
.
執行在埠 3443 上的網站軟體很可能在其 HTML 程式碼中生成包含埠號的連結。
您需要為軟體找到一種方法來生成指向沒有埠號的域的連結。
我建議您的另一個更改是:
server { listen 127.0.0.1:3443 ssl; server_name wanderingwerners.com www.wanderingwerners.com; ssl_certificate /path/to/my/fullchain.pem; ssl_certificate_key /path/to/my/privkey.pem; index index.html; root /var/www/wanderingwerners.com/; }
使用此配置埠 3443 不會暴露在您的伺服器之外,它只能從伺服器本身訪問。應用此配置意味著您需要先修復上一個問題。