技术解析

请问 Nginx 反代切割子域名如何实现
0
2021-05-25 16:40:53
idczone

标题一句话说不清楚,需求是这样的,假设有 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;
}

你这个要配合 dns.

已经将 *.a.com 的域名都解析到了 这个 IP,Nginx 这边不知道怎么设置

配置 hosts

dns 有种记录叫做 cname

4 、匹配正则表达式:
server {
listen 80;
server_name ~^(?.+)\.howtocn\.org$;
...
}

我是要做动态的,是不只有 ccc.bbb.a.com 这一个域名

nginx server_name 字段支持通配符和正则表达式

好像回复错了

这种跳转干嘛走 nginx 呢,直接入口就行了

不要写 server_name, 然后 rewrite 应该是只可以改写 path. 你这个用 nginx lua 倒是可以实现.

http://nginx.org/en/docs/http/server_names.html
server_name 里可以使用命名正则提取你想要的变量
proxy_pass 里可以使用这个变量

nginx 问题问我就对了。
server {
listen 80;
server_name ~^(?.+)\.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;
}
}

正则一方面,容易出错;二方面,性能不行

简单的正则没什么性能问题

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服