使用 apache2 在特定文件夹上运行反向代理

使用 apache2 在特定文件夹上运行反向代理

我想在 mydomain.tld 上运行一个普通网站,但是目录 mydomain.tld/ws 应该重定向/代理到在 127.0.0.1:8989 上运行的本地 websocket 服务器。

这是我目前得到的:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName mydomain.tld

    DocumentRoot /var/www/mydomain.tld/

    ProxyPass /ws ws://127.0.0.1:8989/
    ProxyPassReverse /ws ws://127.0.0.1:8989/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/mydomain.tld/>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.mydomain.tld.log
    CustomLog ${APACHE_LOG_DIR}/access.mydomain.tld.log combined
</VirtualHost>

然而,正常的网站可以工作,但我无法连接到 /ws,因为我收到状态代码 403 Forbidden,尽管我收到了正确的 http 响应标头,X-Powered-By: Ratchet/0.3.4即 websocket 服务器。

这是从 CustomLog 合并而来的:

someip - - [15/Apr/2016:08:59:31 +0200] "GET /ws HTTP/1.1" 500 668 "-" "-"

我在 Ubuntu 14.04 上运行 Apache 2.4 - 我做错了什么?

更新

刚刚尝试添加子域,但仍然出现同样的错误:

<VirtualHost *:80>
        ServerName ws.mydomain.tld
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPassReverse / ws://127.0.0.1:8989/
        ProxyPass / ws://127.0.0.1:8989/
</VirtualHost>

答案1

http://当您监听端口 80 时,需要使用代理服务器。

<VirtualHost *:80>
        ServerName ws.mydomain.tld
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPassReverse / http://127.0.0.1:8989/
        ProxyPass / http://127.0.0.1:8989/
</VirtualHost>

相关内容