我正在尝试为 Socket.IO 游戏设置一个服务器,但我们也将通过 Apache 提供一个 php 小型登陆页面。
我设法通过从 Apache 到 Socket.IO 应用程序的代理使服务器正常工作。Apache 在 :80 上运行,节点在 :8080 上运行,将对公众关闭。代理在 apache 的子目录中完成。配置如下:
<VirtualHost *:443>
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
ServerAdmin XXXXX
ServerName XXXXX
DocumentRoot /var/www/html/XXXXX
ErrorLog /var/log/error.log
CustomLog /var/log/access.log combined
SSLCertificateFile XXXXX
SSLCertificateKeyFile XXXXX
Include XXXXX
SSLCertificateChainFile XXXXX
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:8080/$1 [P,L]
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
ProxyPass /game http://localhost:8080 retry=0
ProxyPassReverse /game http://localhost:8080
ProxyPass /socket.io http://localhost:8080/socket.io
ProxyPassReverse /socket.io http://localhost:8080/socket.io
</VirtualHost>
</IfModule>
现在,我的问题是:
这会影响性能吗?apache 的重写规则是否可能太多,以至于它无法处理,比如说,最多或许10,000 名玩家?
如果可以的话,还有其他更好的配置选择吗?