【发布时间】:2011-12-14 06:25:11
【问题描述】:
我正在尝试配置 nginx 以代理将请求传递到另一台服务器, 仅当 $request_body 变量与特定正则表达式匹配时。
我现在的问题是,我不知道如何准确地配置这种行为。
我目前只有这个:
server {
listen 80 default;
server_name test.local;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
if ($request_body ~* ^(.*)\.test) {
proxy_pass http://www.google.de;
}
root /srv/http;
}
}
但这里的问题是,root 总是占上风。 代理不会通过任何一种方式。
有什么想法可以做到这一点吗?
提前致谢
【问题讨论】:
-
您确定要检查
$request_body与正则表达式吗?它会使您的应用程序慢 x 倍另外,您是要执行proxy_pass还是仅执行redirect? -
是的,很遗憾,我别无选择,而且我确实需要代理通过,应用程序无法重定向(xml-rpc 客户端)
-
但是现在有什么问题呢?不工作吗?日志中有什么?
-
是的,它不起作用,当我删除根行时,代理工作,当我添加根行时,就好像根本没有配置代理。
-
所以我需要设法让 if 像我期望的那样工作......