我不完全确定我在这里寻找的是什么,所以我无法有效地搜索我的答案。
我正在为 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/
,它工作得很好,所以看起来它正在用尾随做某事/
运行在端口 3443 上的网站软件很可能在其 HTML 代码中生成包含端口号的链接。
您需要为软件找到一种方法来生成指向没有端口号的域的链接。
我建议您的另一个更改是:
使用此配置端口 3443 不会暴露在您的服务器之外,它只能从服务器本身访问。应用此配置意味着您需要先修复上一个问题。
当您从 URL 中省略尾部斜杠时,您描述的重定向来自 nginx。你应该可以用
port_in_redirect off;
.