请问 Nginx 反代切割子域名如何实现

2020-07-23 10:31:57 +08:00
 binbinyouliiii

标题一句话说不清楚,需求是这样的,假设有 a.com 的域名,希望 nginx 收到 ccc.bbb.a.com 的 host 能够反代到 ccc.bbb 这个 host 去,找了一下资料,没有找到怎么配置

想要类似这样的配置:

server_name  ${child}.a.com;
location / {
    proxy_pass              http://${child}:8080;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        Host $http_host;
}
2272 次点击
所在节点    NGINX
14 条回复
joesonw
2020-07-23 10:38:18 +08:00
你这个要配合 dns.
binbinyouliiii
2020-07-23 10:41:35 +08:00
@joesonw #1 已经将 *.a.com 的域名都解析到了 这个 IP,Nginx 这边不知道怎么设置
suman
2020-07-23 10:46:16 +08:00
配置 hosts
ghostwwg
2020-07-23 10:46:48 +08:00
@binbinyouliiii dns 有种记录叫做 cname
aapeli
2020-07-23 10:48:06 +08:00
4 、匹配正则表达式:

server {
listen 80;
server_name ~^(?.+)\.howtocn\.org$;
...
}
binbinyouliiii
2020-07-23 10:48:55 +08:00
@ghostwwg #4 我是要做动态的,是不只有 ccc.bbb.a.com 这一个域名
aapeli
2020-07-23 10:49:05 +08:00
nginx server_name 字段支持通配符和正则表达式
aapeli
2020-07-23 10:50:21 +08:00
@aapeli 好像回复错了
takemeaway
2020-07-23 10:53:03 +08:00
这种跳转干嘛走 nginx 呢,直接入口就行了
joesonw
2020-07-23 10:53:29 +08:00
@binbinyouliiii 不要写 server_name, 然后 rewrite 应该是只可以改写 path. 你这个用 nginx lua 倒是可以实现.
rrfeng
2020-07-23 10:56:38 +08:00
http://nginx.org/en/docs/http/server_names.html

server_name 里可以使用命名正则提取你想要的变量

proxy_pass 里可以使用这个变量
GM
2020-07-23 10:59:45 +08:00
nginx 问题问我就对了。

server {
listen 80;
server_name ~^(?<subdomain>.+)\.hottocn\.org$;

location / {
proxy_pass http://backend_server/;
proxy_set_header Host $subdomain.ccc.com;
}

#或者
location / {
proxy_pass http://$subdomain.ccc.com/;
proxy_set_header Host $subdomain.ccc.com;
}
}
ericgui
2020-07-23 11:08:02 +08:00
@aapeli 正则一方面,容易出错;二方面,性能不行
GM
2020-07-23 11:24:18 +08:00
@ericgui 简单的正则没什么性能问题

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

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

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

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

© 2021 V2EX