【问题标题】:Reverse proxy with websocket mod_proxy_wstunnel使用 websocket mod_proxy_wstunnel 进行反向代理
【发布时间】:2013-07-13 00:32:17
【问题描述】:

我的网络套接字和我的反向代理 Apache 有问题,我已升级到最新版本 2.4.5 并加载了模块 mod_proxy_wstunnel

httpd.conf:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.toto.fr
ServerAlias toto.fr


ProxyPass /my_app  http://1X.X.X.1:8080/my_app
ProxyPassReverse /web_pmr  http://1X.X.X.1:8080/my_app
ProxyPassReverseCookiePath /my_app /
ProxyPassReverseCookieDomain localhost my_app
ProxyRequests off
ProxyTimeout 15

#WEBSOCKETS


ProxyPass /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/my_app/BasicWebsocketServlet retry=0
ProxyPassReverse /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/web_pmr/BasicWebsocketServlet retry=0


ErrorLog "logs/my_app_error.log"
LogLevel debug
CustomLog "logs/my_app_access.log" combined
<Proxy *>
      Order deny,allow
      Allow from all
</Proxy>
</VirtualHost>

当我在本地 URL 中进行测试时,websockets 正在工作,但使用反向代理 Apache,Tomcat 日志中没有任何痕迹。

【问题讨论】:

  • “没有痕迹”是什么意思?请求是否被转发到 Tomcat?

标签: apache2 websocket reverse-proxy mod-proxy


【解决方案1】:

这一行:

ProxyPass /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/my_app/BasicWebsocketServlet retry=0

需要在这个之前来:

ProxyPass /my_app  http://1X.X.X.1:8080/my_app

解释(来自https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass):

订购 ProxyPass 指令

配置的 ProxyPass 和 ProxyPassMatch 规则按照配置顺序进行检查。第一条匹配的规则获胜。所以通常你应该首先从最长的 URL 开始对冲突的 ProxyPass 规则进行排序。否则,稍后使用 URL 的前导子字符串的任何较早规则将隐藏更长 URL 的后续规则。请注意,与工人共享有一些关系。相比之下,Location 块中只能放置一个 ProxyPass 指令,并且最具体的位置将优先。

出于同样的原因,排除项必须位于通用 ProxyPass 指令之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2019-06-26
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多