我向这个 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/