【问题标题】:404 not-found after setting proxy in apache for BOSH在 Apache 中为 BOSH 设置代理后找不到 404
【发布时间】:2025-12-03 09:30:02
【问题描述】:

我正在尝试用 openfire 设置 BOSH,启用它后,我已经为 apache 设置了代理

如下

<VirtualHost XX.XX.XXX.XXX:80>
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    DocumentRoot /home/mydomainname/public_html
    ServerAdmin webmaster@mydomain.com
    UseCanonicalName Off

    ProxyRequests Off

     <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPass /http-bind/ http://www.mydomain.com:7070/http-bind/
    ProxyPassReverse /http-bind/ http://www.mydomain.com:7070/http-bind/


    <IfModule mod_suphp.c>
        suPHP_UserGroup mydomainname mydomainname
    </IfModule>
    <IfModule !mod_disable_suexec.c>
        SuexecUserGroup mydomainname mydomainname
    </IfModule>

    ScriptAlias /cgi-bin/ /home/mydomainname/public_html/cgi-bin/


</VirtualHost>

但是当我将 BOSH 连接设置为 /http-bind/ 或 http://mydomain.com/http-bind

使用 strophe.js 发送 XMPP BOSH 请求时返回 404 ERROR

我需要在 apache2 中不能做任何事情吗?

我的设置在/etc/httpd/conf/httpd.conf

挖掘 www.mydomain.com

    ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.5 <<>> www.mydomain.com
    ;; global options:  printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4697
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;www.mydomain.com.      IN  A

    ;; ANSWER SECTION:
    www.mydomain.com.   14400   IN  CNAME   mydomain.com.
    mydomain.com.       14400   IN  A   XX.XX.XXX.XXX

    ;; Query time: 61 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    ;; WHEN: Wed Dec  5 02:2

    0:20 2012
   ;; MSG SIZE  rcvd: 66

getent 主机 www.mydomain.com

XX.XX.XXX.XXX   mydomain.com www.mydomain.com

卷曲http://www.mydomain.com:7070/http-bind/

HTTP ERROR 400

Problem accessing /http-bind/. Reason:

    Bad Request
Powered by Jetty://

【问题讨论】:

  • 第一:当您获得 404 时,您期望得到什么?按顺序检查的事情:dig www.mydomain.com 在您的服务器上运行时返回什么? getent hosts www.mydomain.com 在您的服务器上运行时返回什么? curl http://www.mydomain.com:7070/http-bind/ 在您的服务器上运行时返回什么?这些问题的答案将有助于缩小问题所在。
  • @Ladadadada aplz 查看更新
  • 这是一个 400 错误而不是 404 但这可能是因为我们没有提供适当的 POST 参数或类似的东西。它至少让我们知道请求正在到达 Jetty。查看您的 Jetty 日志,看看其中是否有任何有用的信息。

标签: apache2 xmpp mod-proxy strophe


【解决方案1】:

为了能够使用ProxyPassProxyPassReverse,您需要先启用Apache mod_proxy。

host# a2enable mod_proxy
host# /etc/init.d/apache2 restart

【讨论】: