2

我正在尝试将我的服务器从本地子网移到域中。主要网页正在运行,我将它们放在 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 也在运行。如果您能想到任何可能的解决方案,请告诉我

4

0 回答 0