到目前为止,我遇到了一个有趣的问题。我有一个套接字在我的服务器上运行了几个月,我想出了一个更改主机名的想法。
在我更改了主机名和指向证书的链接后,套接字不再起作用。
我目前拥有这两个域名,假设它们是example-old.com和example.com,并且我有这两个域的证书,由Cloudflare颁发,都是通配符(即,用于example.com和*.example.com)。
我没有改变服务器,我甚至没有重启它。当我将example改回example_old时,服务器名称和证书路径都恢复正常。然而,一旦我把新的域名放在这里,没有什么变化- socket.example.com只是解析为404 (即使没有虚拟主机声明也是如此)。
所以,这是/etc/apache2/sites-available/000-default.conf中的代码,它声明了我的套接字服务器。
<VirtualHost *:80>
ServerName socket.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyVia on
RewriteEngine on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html
ServerName socket.example.com
SSLEngine on
SSLCertificateFile /var/www/subdomains/example/example.pem
SSLCertificateKeyFile /var/www/subdomains/example/example.key
SSLCertificateChainFile /var/www/subdomains/example/example.pem
SSLProxyEngine On
ProxyPreserveHost On
ProxyRequests Off
# This is for websocket requests
ProxyPass /wss wss://localhost:9024/
ProxyPassReverse /wss wss://localhost:9024/
ProxyPass /wchat wss://localhost:9025/
ProxyPassReverse /wchat wss://localhost:9025/
ProxyPass / https://localhost:3333/
ProxyPassReverse / https://localhost:3333/
</VirtualHost>我真的不记得这个更改是否是为了更改我的socket服务器而必须进行的唯一更改。
作为一个套接字,我在PHP中使用Workerman。由于端口和服务器都没有更改,所以我保留了我的文件socket.php不变。当我在/etc/apache2/sites-available/000-default.conf中使用新域名启动socket.php时,一切都是静默的,它既不响应新连接,也不响应其他任何东西。
我还尝试了让socket在旧域名下运行,为新域名声明相同的虚拟主机,并尝试启动socket的另一个实例。在旧域名上运行的那个运行得很好,而新的则不是。
我能做错什么呢?据我所知,在启动最初的socket服务器时,我肯定还做了一些其他的事情。但是,我不记得那是什么了。
发布于 2021-06-23 00:18:34
我终于找到了解决方案,如果有人想知道的话
将Cloudflare上的灵活加密切换为完全加密,一切都开始正常工作

https://stackoverflow.com/questions/68085639
复制相似问题