5月52022
Nginx 反向代理任意请求的域名
有一个需求是作为子域名反向代理全网的域名,最早采用的方案是用爬虫爬取全网的域名,然后生成 Nginx 配置文件。
比如请求 baidu.example.com 则反向代理 www.baidu.com。
爬取全网域名的工作已经完成,在调试 Nginx 反向代理配置遇到了一个问题:www.baidu.com 引用了static.baidu.com 的资源,如何正确的引用资源成了阻碍项目进展的难题。
最后我决定采用 Nginx 正则表达式做一个 hack,截取请求来的 www.baidu.com.example.com 中的www.baidu.com,然后写 Nginx 相应的代理配置。
server {
listen 80;
server_name _;
location / {
resolver 8.8.8.8;
if ($host ~ (.*)\.qiyichao\.cn) {
proxy_pass http://$1;
}
proxy_set_header referer http://$1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $1;
proxy_set_header Accept-Encoding "";
subs_filter (https?://[^\'"\\\\<>:\s]+(:\d+)?)?([^\'"\\\\<>:\s]+?) http//$3.qiyichao.cn/ rgi;
}
}
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!