我向这个 URL 发出请求:
wss://domain/websockify?port=6801
端口参数可以动态更改。如何让 ProxyPass 重定向到从 URL 中提取的动态端口?

这是适用于预定义端口的配置:

ProxyPass /websockify ws://localhost:6801/websockify/
ProxyPassReverse /websockify ws://localhost:6801/websockify/

如果我使用 ProxyPassMatch,apache 会告诉我有一个错误:
ProxyPassMatch ^/.*\?port=(.*)$ ws://localhost:$1/websockify/

#ProxyPass Unable to parse URL: ws://localhost:$1/websockify/

我使用 apache 2.4.10

最佳答案

这需要通过 mod_rewrite 来完成。

匹配查询字符串中的端口。
使用 [P] 标志重定向到我们在条件中匹配的端口。
在 ProxyPassRevese 中使用相同的匹配。

RewriteEngine on
RewriteCond %{QUERY_STRING} port=(.*)
RewriteRule /websockify ws://localhost:%1/websockify/ [P]
ProxyPassReverse /websockify ws://localhost:%1/websockify/

关于apache - 如何使用Apache反向代理动态端口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37815906/

10-12 04:08