Apache服务器上的websocket的配置文件

时间:2019-02-08 06:53:22

标签: php apache websocket httpd.conf user.config

我对后端Web开发是完全陌生的,并且已经使用php创建了一个项目,但是我现在想使用websockets来提高一切效率。为此,我将使用Ratchet。我正在运行Apache 2.4.33。当我尝试运行测试文件时,出现400错误。我还没有服务器,也没有域,希望在本地计算机上运行测试文件。这是我的user.conf文件的样子:

<VirtualHost *:80>
    ServerName localhost

    ProxyPreserveHost On
    ProxyPass / localhost:8080/
    ProxyPassReverse / http:localhost:8080/
    ProxyRequests Off
    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
    RewriteRule .* ws://localhost:8080%{REQUEST_URI} [P]
</VirtualHost>

正如我提到的,每当我尝试运行server.php代码时,页面就会显示为“ HTTP ERROR 400”。我的代码可能存在问题,但我可以肯定地说这与设置conf文件的方式有关。

1 个答案:

答案 0 :(得分:0)

我的配置文件中有错误。我运行apachectl -S来查找它们。这是其他像我一样为此苦苦挣扎的人的有效配置文件:

<Directory "/Users/User/Sites/ProjectFolder">
   AddLanguage en .en
   AllowOverride All
   Options Indexes MultiViews FollowSymLinks
   Require all granted
</Directory>

ProxyRequests Off
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:8080/$1 [P,L]
<VirtualHost localhost:8080>
        ProxyPass / ws://localhost:8080/
        ProxyPassReverse / ws://localhost:8080/
</VirtualHost>

如果您正在使用Ratchet,请确保您的composer.json使用正确的版本正确设置。然后通过运行php composer upgrade对其进行升级。最后,请确保使用sudo apachectl restart重置apache服务器。