我需要在NGINX中创build一个代理重写,其中重写URL由请求的URI中包含的数据组成。 例如:
鉴于url:
http:// proxyhost:5555 / go / 222.222.222.222 / action / etc
重写应该是:
http:// 222.222.222.222:6666 / action / etc
这在NGIX中可能吗?
我可以在Apache的httpd上做到这一点,但到目前为止我还没有想出如何在nginx上做到这一点
(特定于Apache的例子):
RewriteEngine On RewriteBase "/" RewriteRule "^go/(.*)/action/(.*)$" "http://$1:6666/action/$2" [P]
这个location块应该做的工作。
location ~ ^/go/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/(action/.+)$ { proxy_pass http://$1:6666/$2; }
我在这里假定目标主机总是被指定为一个IP地址。 正则expression式匹配一个IP地址。 如果你愿意的话,它可以或多或less地具体化。
无论如何,这是在nginx中通过在location指令中使用正则expression式捕获完成的,然后在proxy_pass语句中使用捕获的variables。