我想在 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>