Apache 服务器上 websockets 的配置文件

Config file for websockets on an Apache server

我完全不熟悉后端 Web 开发,并且使用 php 制作了一个项目,但我现在想使用 websockets 来提高效率。为此,我将使用 Ratchet。我正在 运行ning 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 文件的方式有关。

我的配置文件中有错误。我 运行 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/ [P,L]
<VirtualHost localhost:8080>
        ProxyPass / ws://localhost:8080/
        ProxyPassReverse / ws://localhost:8080/
</VirtualHost>

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