Невозможно обслужить приложение django App за Apache + Nginx

У меня есть приложение Django, которое я пытаюсь развернуть на нашем рабочем сервере через доменное имя.

На нашем девелоперском сервере используется apache, а для обслуживания приложений и статических/медийных файлов я использую nginx.

Если я развертываю его локально на своем компьютере (localhost:port), все работает отлично. Как только я пробую его на нашем сервере разработки, я не могу подключиться к конечной точке websocket.

Сначала я развернул свое приложение с помощью docker-compose.yml, состоящего из nginx, приложения django, сервисов redis и postgres.

Ниже приведен мой файл nginx conf

server {

    listen 80;
    listen 443 default_server ssl;
    server_name localhost;
    charset utf-8;

    location /static {
        alias /app/static/;
    }
    
    location /upload {
        alias /app/media/;
    }
    
    location / {
        proxy_pass http://web:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https; 
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }
    location /ws/ {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_pass http://web:8000;
    }
}

А вот мой apache conf

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName our.dev.server
        <Location />
            ProxyPass http://127.0.0.1:89/
            ProxyPassReverse http://127.0.0.1:89/
            # Proxy WebSocket connections to your application
            RewriteEngine On
            RewriteCond %{HTTP:Upgrade} websocket [NC]
            RewriteCond %{HTTP:Connection} upgrade [NC]
            RewriteRule ^/ws/(.*)$ ws://127.0.0.1:89/$1 [P,L]
        </Location>
        SSLCertificateFile /etc/letsencrypt/live/our.dev.server/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/our.dev.server/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        RequestHeader add X-Forwarded-Proto "https"
    </VirtualHost>
</IfModule>

Когда я пытаюсь подключиться к websocket, кажется, что либо apache, либо nginx не обновляет http-запрос до ws...

Вернуться на верх