有关 nginx 泛域名反向代理的写法

2023-02-14 00:08:13 +08:00
 Richard14

网上搜了半天没啥有效信息,询问一下万能的 v 友

比如绑定*.domain.com 的域名,如果想加反向代理的话,一般写法是

server {
   listen 80;
   server_name ~^(?<subdomain>.+)\.m\.domain\.com$;

   location /{
       proxy_pass http://xxx/;
       proxy_set_header Host $host;
   }
}

这里利用 /做路由,但是如果我想要 a.domain.comb.domain.com 分别代理不同的网页,要怎么识别 a 和 b 的部分呢?

1767 次点击
所在节点    程序员
11 条回复
dorothyREN
2023-02-14 00:12:02 +08:00
if 判断一下就行吧
OutOfMemoryError
2023-02-14 00:18:37 +08:00
julyclyde
2023-02-14 08:54:16 +08:00
虽然能实现,不过还是建议重新梳理一下需求
dode
2023-02-14 09:10:48 +08:00
server {
listen 80;
server_name a.domain.com;

location /{
proxy_pass http://xxx/;
proxy_set_header Host $host;
}
}


server {
listen 80;
server_name b.domain.com;

location /{
proxy_pass http://xxx/;
proxy_set_header Host $host;
}
}


server {
listen 80;
server_name ~^(?<subdomain>.+)\.m\.domain\.com$;

location /{
proxy_pass http://xxx/;
proxy_set_header Host $host;
}
}
xuanbg
2023-02-14 09:37:01 +08:00
为什么不写成两个 server 呢? 4 楼那样?
chinni
2023-02-14 09:45:21 +08:00
sniproxy 不就行……
rekulas
2023-02-14 10:28:12 +08:00
location 里面可以写 if 判断 一个 server 也可以
if ( $host = 'a.domain.com' ){
proxy_pass https://www.baidu.com:443;
}
xiang0818
2023-02-14 10:44:12 +08:00
最好用不同的域名配置
wxyrrcj
2023-02-14 13:45:04 +08:00
*.baidu.com
FrankAdler
2023-02-14 15:40:03 +08:00
二楼 map 正解
salmon5
2023-02-15 10:56:34 +08:00
#4 的方法无疑是最好的,大道至简;
map 弄复杂了,map 适合更复杂的场景。

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

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

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

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

© 2021 V2EX