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头像吧!