我不完全确定我在这里寻找什么,所以我无法有效地寻找答案。
我在用着脱水针对 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 中设置的某些内容是造成混乱的原因,但我并不确定。
:3443
有没有办法可以更新我的 nginx 配置,让脱水服务器继续工作,但同时也告诉浏览器真的他们应该连接到哪里?(或者至少不要在地址栏中显示)
更新
当我这样做时,curl https://www.wanderingwerners.com/a-beginning
它给了我一个 301 重定向。这里肯定是我的 nginx 配置出了问题。
另一个更新
当我这样做的时候,curl https://www.wanderingwernerx.com/a-beginning/
它工作得很好,所以看起来它正在做一些事情/
答案1
您描述的重定向来自 nginx,因为您省略了 URL 中的尾部斜杠。您应该能够使用 来取消它port_in_redirect off;
。
答案2
很可能在端口 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 不会暴露在服务器外部,只能从服务器本身访问。应用此配置意味着您需要先修复上一个问题。