Неожиданный Nginx редирект, где он не должен быть - PullRequest
0 голосов
/ 13 апреля 2020

Итак, у меня nginx config, 2 nodejs приложений на разных портах, одно из них ориентировано на клиента с https, другое - CMS на http

Мне нужно прокси-запросы от https://example.com/uploads/* для приложения CMS. Когда я добавляю директиву location /uploads, она, кажется, делает то, что я хочу, но она также начинает перенаправлять http://cms.example.com на https://example.com, и я не понимаю, почему?

В моем понимании каждый запрос к http://cms.example.com должен обрабатываться первым блоком сервера, у него есть явный порт и имя_сервера, но по некоторым причинам он не работает

server {
    listen 80;
    server_name cms.example.com;
    location / {
        proxy_pass http://localhost:4444;
    }   
}
server {
    listen 80;
    server_name www.example.com example.com;
    return 301 https://example.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name example.com;
    root /;
    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    # That's where it goes wrong
    location /uploads {
        proxy_pass http://localhost:4444;
    }

    error_page 502 @offline;
    location @offline {
        try_files /error500.html 502;
    }
    location ~ /.well-known {
        allow all;
    }
}
...