请教一个 NGINX 问题,部分路径请求 http://127.0.0.1:3000,其他未定义路径访问都请求线上的服务器环境

2019-12-14 16:39:29 +08:00
 hhs66317

标题有限,写的不太情况,这里举例说下。。

有个测试服务器,IP 是 172.16.0.8,想通过绑定 host 的方式访问该服务器,比如:

127.16.0.8 www.abc.com

该测试服务器通过 NGINX 来反向代理到本机的 http://127.0.0.1:3000 环境

这里需求有些不常见,期望的访问效果,举例如下:

1、访问自定义路径 http://www.abc.com/xxx/yyy.php 时,反向代理到 http://127.0.0.1:3000 2、访问其他路径,比如 http://www.abc.com/1/2/3.php 时,转发到线上环境的 http://www.abc.com/1/2/3.php

总之就是只有明确指定的路径才会反向代理到 http://127.0.0.1:3000,其他的都直接请求线上环境。

如果有描述不清楚的地方,请指正,谢谢!

3666 次点击
所在节点    NGINX
9 条回复
paragon
2019-12-14 17:04:33 +08:00
这个你定义两个 location 不就行了嘛?
nightwitch
2019-12-14 17:19:20 +08:00
伪代码
location xxx
{
proxy_pass 127.0.0.1:3000
}
location /
{
root_path xxxxxx
}
xiri
2019-12-14 18:09:10 +08:00
把 proxy_pass 放在单独的 location 里面不就行了吗,不过要注意一下 location 的匹配优先级
hhs66317
2019-12-15 11:46:20 +08:00
@nightwitch 这个 root_path 可以写 http://www.abc.com
hhs66317
2019-12-15 11:47:55 +08:00
@paragon 主要是不知道怎么让其他请求通过 Nginx 转发到线上环境
realpg
2019-12-15 12:36:26 +08:00
找一个会基础 nginx 配置的人吧
我觉得你这些需求 50 块钱就能解决问题
Hanada
2019-12-15 12:56:42 +08:00
@hhs66317 你的那个是线上环境的话继续用 proxy_pass 反向代理你的 http://www.abc.com
AlbertSun
2019-12-15 22:20:12 +08:00
我想我大概理解你的意思了,这样试试:
server {
listen 80;
server_name www.abc.com;
location /xxx {
proxy_pass http://127.0.0.1:3000;
# 其余代码
}
location / {
proxy_pass http://www.abc.com;
# 其余代码
}
}
前提是 127.16.0.8 这台服务器不要修改 www.abc.com 的 host。
hhs66317
2019-12-24 15:13:46 +08:00
感谢各位,解决了我的问题!

最近杂事较多,才想起来过来看看,惭愧

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

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

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

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

© 2021 V2EX