我真的在寻找一种解决 nginx 反向代理问题的提示。 现在我有一个类似的配置:
server {
listen 443 ssl http2;
server_name example.net;
ssl_certificate /etc/nginx/certs/example.crt;
ssl_certificate_key /etc/nginx/certs/example.key;
location / {
resolver 1.1.1.1 ipv6=off;
proxy_ssl_server_name on;
proxy_pass https://<example.com>:443;
}
}
所以基本上这个配置是这样的:你在浏览器中输入
https://example.net
,你得到 https://example.com
的内容作为响应,但初始域保持不变(example.net)。
作为最后一步,我想在访问 example.net 时将 HTTP 重定向到 HTTPS。让我解释一下:就像你只在浏览器中输入
example.net
,它会自动回复你https://example.net
的内容,但域保持不变(example.net)。
我尝试了以下方法:
server {
listen 80;
server_name example.net;
return 301 https://example.com:443$request_uri;
}
我还尝试了
proxy_pass
指令并在永久重定向指令中将 example.com
更改为 example.net
。似乎都无法正常工作。
在 Chrome 浏览器中调查开发人员控制台时,我得到
NS_BINDING_ABORTED
这通常表示初始请求在完成之前已被修改。
所以伙计们,让我知道我错在哪里。让它起作用是真的吗?提前致谢!
由于您的服务器块在 443 上侦听期望
example.net
,因此您需要重定向到 example.net
而不是 example.com
。端口可以省略,因为您使用默认端口。
server {
listen 80;
server_name example.net;
return 301 https://example.net$request_uri;
}
这将更改您的网址
返回 301 https://example.com$request_uri;
server {
listen 443 ssl http2;
server_name example.net;
ssl_certificate /etc/nginx/certs/example.crt;
ssl_certificate_key /etc/nginx/certs/example.key;
location / {
resolver 1.1.1.1 ipv6=off;
proxy_ssl_server_name on;
proxy_pass https://example.com:443;
return 301 https://example.com$request_uri;
}
}