求问一个 nginx 或 apache 反向代理的配置问题

2023-03-27 12:41:11 +08:00
 mingl0280
我最近在公司里部署一个反向代理的服务器,要求是让内网 172.16 网段的部分设备(在白名单里面的)能访问同样是内网 10.0 的一些网站,这些网站是带域名的。172.16 这边的站只需要使用 http (不是 https )。目前我的目标是让这个 http://服务器 IP/svc1/的目录提供 10.0 的 A 网站,然后 http://服务器 IP/svc2/提供 B 网站的服务。

现在问题是,10.0 网段的一些网站,其返回的网页里面要么是有 301 绝对地址跳转,要么是有一些类似于 /s/12345 这种从根目录开始的 url ,一般的 ProxyPass 好像不能处理这两种情况,而且 301 也不知道怎么搞。

我对 Nginx 确实不熟悉,请问有什么方案可以处理这两种情况吗?如果没有办法的话,可能我就只能搞成多台虚拟机,每台虚拟机处理一个域名的映射了。

请问有什么 nginx 或者 apache 的方案可以处理这些情况吗?

谢谢。
794 次点击
所在节点    问与答
10 条回复
jifengg
2023-03-27 13:18:31 +08:00
我的建议是:每个网站通过不同的域名映射。nginx 里,只需要每个域名单独配置一个 server 即可。
mingl0280
2023-03-27 13:29:23 +08:00
@jifengg 我之前用这个方案,但是好像不能处理服务器发送的 301 跳转到 https 这个问题。
mingl0280
2023-03-27 13:29:36 +08:00
@jifengg 我之前试过这个方案,但是好像不能处理服务器发送的 301 跳转到 https 这个问题。
zhanlanhuizhang
2023-03-27 14:34:24 +08:00
用 stream 模块试试。
zhanlanhuizhang
2023-03-27 14:34:59 +08:00
同时,用 1 楼的方案:每个网站通过不同的域名映射
jifengg
2023-03-27 16:36:23 +08:00
@mingl0280 “301 到 https”是必要的吗?你问题里不是说不使用 https 么?强制跳转 https 是哪里配置的就在哪里关掉了
mingl0280
2023-03-27 19:59:18 +08:00
@jifengg 服务器那边网站返回 301 不是我能控制的……301 内容是一个完整的 location ,这个肯定得 nginx 改 header ,不然肯定不工作。
jifengg
2023-03-28 08:48:28 +08:00
@mingl0280 那就搞清楚服务器是因为什么而 301 ,是因为访问的是 80 端口不是 443 端口,要求强制跳转 https ?还是访问什么页面没权限导致 301 到其他页面?
如果是 80 跳 443 ,那么你可以考虑 proxy_pass 的时候用 https 。
如果是业务跳转,那就需要用 proxy_redirect 替换一下跳转地址。比如
proxy_redirect https://1.2.3.4/ /;
表示,如果代理要求 301 到“https://1.2.3.4/**”,那么替换成“/**”后放到 location header 里给到用户,用户浏览器就能够正常跳转了.用法你可以自己再 google
mingl0280
2023-03-28 09:54:52 +08:00
@jifengg 今天仔细试了下,搞定了。就是两个问题都有,升级了下 nginx 版本给弄好了,proxy_redirect 和 proxy_cookie_flags 都设置了一下就好了。谢谢!
jifengg
2023-03-28 10:06:52 +08:00
@mingl0280 不客气,问题解决了就好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/927500

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX