关于 nginx 根据 IP 来访问不同后端问题

2019-07-23 11:10:42 +08:00
 aaa5838769
server {
    listen       80;
    server_name  abc.com.cn;
    access_log /dev/null;
    error_log  /data/logs/error.log;
    
    location / {

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
           if ($remote_addr ~ "192.168.1.100") 
              {
                      proxy_pass http://abc_test_server;
                       break;
               }
    proxy_pass http://abc_server;
    }
}
3073 次点击
所在节点    程序员
15 条回复
zpfhbyx
2019-07-23 11:16:16 +08:00
nginx ip 分流 google 下
taolu
2019-07-23 11:19:30 +08:00
`geo`指令吧
arrow8899
2019-07-23 11:25:33 +08:00
if ($remote_addr ~ "192.168.1.*") 直接就是支持正则的
aaa5838769
2019-07-23 11:30:26 +08:00
@zpfhbyx 我这个需求是两个不同的网段,一个 192.168.4.x,另一个是 172.17.10.x
aaa5838769
2019-07-23 11:30:43 +08:00
@taolu 我搜一下。
aaa5838769
2019-07-23 11:31:13 +08:00
@arrow8899 非常感谢
zpfhbyx
2019-07-23 11:31:14 +08:00
@aaa5838769 那用 2l @taolu 说的 geo 吧
whsir
2019-07-23 13:40:44 +08:00
我觉得你可以参考下这个 https://blog.whsir.com/post-4430.html
realpg
2019-07-23 14:39:30 +08:00
正则表达式不是爱怎么写就怎么写
ToughGuy
2019-07-23 16:59:25 +08:00
map $remote_addr $upstream {
192.168.1.100 "abc_test_server";
}

proxy_pass http://$upstream;
ToughGuy
2019-07-23 17:00:39 +08:00
Aresxue
2019-07-23 17:18:07 +08:00
不是默认支持正则?
jamesliu96
2019-07-23 17:42:32 +08:00
用核心 map 模块或者 rewrite 模块都能实现,主要看你具体需求了,但其实很少有需要在 ng 代理上做这个的
aaa5838769
2019-07-24 09:49:19 +08:00
@jamesliu96 那么一般都是在路由层还是 DNS 那去做?
jamesliu96
2019-07-24 11:02:10 +08:00
@aaa5838769 都可以,最优方案看具体需求

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

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

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

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

© 2021 V2EX