我正在尝试将我的服务器从本地子网移到域中。主要网页正在运行,我将它们放在 SSL 后面。Apache 会重写从任何 HTTP 连接到 HTTPS 的 url。但是,当我尝试从浏览器中连接 javascript 时:
new WebSocket("wss://" + window.location.host);
我收到以下错误:
WebSocket connection to 'wss://{MY_WEBSITE}.com/message_route/' failed: Error during WebSocket handshake: Unexpected response code: 404
我的 settings.py 配置如下:
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"ROUTING": "my_app.routing.channel_routing",
"Config": {
"hosts": [os.environ.get('REDIS_URL', 'redis://127.0.0.0:6379')],
}
},
编辑(在 APACHE 配置数据中添加):
我的 Apache default.conf 如下(简单重写为 HTTPS):
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>
阿帕奇安全.conf:
<VirtualHost *:443>
ServerName my_domain.com
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/ssl/my_domain/my_domain.crt
SSLCertificateKeyFile /etc/ssl/my_domain/myserver.key
SSLCACertificateFile /etc/ssl/my_domain/my_domain.ca-bundle
Alias /static /home/user/my_app/myApp/static_files
<Directory /home/user/my_app/myApp/static_files>
Require all granted
</Directory>
<Directory /home/user/my_app/myApp/MyApp>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess MyApp python-path=/home/user/my_app/myApp/MyApp
WSGIProcessGroup MyApp
WSGIScriptAlias / /home/user/my_app/myApp/MyApp/MyApp/wsgi.py
</VirtualHost>
编辑发现apache正在接收请求但没有做任何事情 我跟踪了other_vhosts.access.log并发现当我在chrome控制台中创建一个新的websocket时,apache记录了一个GET请求,但似乎没有将它转发到我的django应用程序。
我也有一个工人在运行,一个 redis 服务器设置,并且 daphne 也在运行。如果您能想到任何可能的解决方案,请告诉我