![nginx 反向代理单个 URL 到自定义服务器单个 URL](https://linux22.com/image/747614/nginx%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E5%8D%95%E4%B8%AA%20URL%20%E5%88%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%95%E4%B8%AA%20URL.png)
我在静态页面提供商上设计了一个页面,我想在浏览我拥有的域名 www.example.org(访问 nginx 服务器)时使该页面可用
目标:https://www.example.org/a/b
-->https://static-page-provider.com/c
- 用户输入
https://www.example.org/a/b
URL - 我所拥有的 nginx 代理在
https://www.example.org
精确路径 /a/b 上接收请求并且必须代理传递:https://static-page-provider.com/c
远程服务器应接收带有 HOST 标头的GET 请求static-page-provider.com
- 用户应该
https://www.example.org/a/b
在 URL 中看到 - 对于带有斜线的最终地址,它应该具有相同的作用
https://www.example.org/a/b/
-->https://static-page-provider.com/c/
(我实际上并不关心它是否/c/
或只是/c
针对这两种情况中的任何一种
应该保留
- https://www.example.org/a/b2-->https://www.example.org/a/b2
- https://www.example.org/a/b/c-->https://www.example.org/a/b/c
- https://www.example.org/a-->https://www.example.org/a
有可能吗?(或者是否存在安全隐患导致这不可能?)。我收到 502 Bad Gateway 错误,并且在我的日志中看到与 SSL 相关的错误
2020/01/23 08:59:43 [error] 30072#0: *499 SSL_do_handshake() failed (SSL: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error) while SSL handshaking to upstream, client: 172.31.28.3, server: www.example.org, request: "GET /a/b/ HTTP/1.1", upstream: "https://xx.xx.xx.xx:443/c/", host: "www.example.com"
尝试下面的配置时。我还不确定这个配置是否完全匹配(是否是/a/b/c
规则的目标?)。
location /a/b/ {
proxy_pass https://static-page-provider.com/c/;
proxy_set_header host mydomain.static-page-provider.com;
}
如果包含最终内容的实际 URLhttps://static-page-provider.com/c/
返回 301 重定向(例如https://static-page-provider-2.com/c/
),则是否有可能为用户遵循重定向,而用户仍然看到https://www.example.org/a/b
?
使用 nginx/1.12.2
编辑:在没有 httpS 的静态提供程序上使用 proxy_pass 时,它可以工作,但我需要有一个安全的连接。