我正在设置一个反向代理,以便通过多个后端对各种网站进行内部测试。
为了能够动态添加后端,我使用通配符子域和部分内容server_name
来提取我的 Nginx 配置的设置:
server {
listen 80;
server_name ~^(?<domain>.+)\.internal-checks(?<bundle>[0-9])\.mycompany\.com$;
[...]
proxy_set_header Host $domain;
proxy_pass http://10.0.0.$bundle:8080;
到目前为止一切顺利。我遇到的问题是:
我怎样才能替换所有出现的 http://$domain
和 http://$domain.internal-checks$bundle.mycompany.com
在我从后端收到的内容中?
需要这样做是为了调整内容中的所有链接以匹配反向代理的通配符 DNS。
我目前的尝试是使用subs_filter
。如果我使用硬编码值,则替换有效:
subs_filter http://www.my-site.com http://www.my-site.com.internal-checks1.mycompany.com r;
但无论我尝试哪种组合,用变量替换最终只会得到原始内容。这是我最新的镜头:
subs_filter http://$domain http://$domain.internal-checks$bundle.mycompany.com r;
期望变量如何subs_filter
使用?