Nginx - 在反向代理中将 HTTP 重定向到 HTTPS 到远程站点

问题描述 投票:0回答:2

我真的在寻找一种解决 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
这通常表示初始请求在完成之前已被修改。

所以伙计们,让我知道我错在哪里。让它起作用是真的吗?提前致谢!

http nginx https reverse-proxy http-redirect
2个回答
0
投票

由于您的服务器块在 443 上侦听期望

example.net
,因此您需要重定向到
example.net
而不是
example.com
。端口可以省略,因为您使用默认端口。

server {
  listen 80;
  server_name example.net;
  return 301 https://example.net$request_uri;
}

0
投票

这将更改您的网址

返回 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;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.