NGINX не удается загрузить изображение после установки SSL - PullRequest
0 голосов
/ 03 августа 2020

У меня есть сервер Nginx перед моим NodeJS на той же машине.
Все HTTP-запросы, включая загрузку файлов через данные граничной формы, отлично работали до сегодняшнего дня. Сегодня мне пришлось установить часть SSL на сервере Nginx, и внезапно все запросы HTTPS перестали работать из-за ограничения CORS.
После того, как я добавил параметр: proxy_set_header 'Content-Type' '*'; , запросы https начинают работать, а файл загрузки - нет.
Итак, в NodeJS, когда я читаю req.files, пуст. Я использую express -fileupload. Если я сделаю запрос через http, работает отлично.
Я провел буквально целый день, пытаясь найти решение.
Пожалуйста, дайте совет. Спасибо.

Server {
    listen 80;
    server_name devapi.example.co;
    client_max_body_size 100M; #100mb

    location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $http_host;
            proxy_pass http://127.0.0.1:3000;

            proxy_set_header 'Access-Control-Allow-Origin' '*';
            proxy_set_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS';
            proxy_set_header 'Access-Control-Expose-Headers' 'x-token';
            proxy_set_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-With,Content-Type,Accept,x-access-token,Authorization,skip';
    }
}


server {
       listen 443 ssl;
       # listen [::]:443 ssl http2;
       server_name *.example.co;
       client_max_body_size 100M; #100mb

       # Certificate
       ssl_certificate /etc/nginx/ssl/chain_co.crt;

       # Private Key
       ssl_certificate_key /etc/nginx/ssl/private-key.key;

       # charset utf-8;

      location / {
               proxy_pass http://127.0.0.1:3000;
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               # proxy_set_header X-Forwarded-Proto $scheme;
               proxy_set_header 'Access-Control-Allow-Origin' '*';
               proxy_set_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS';
               proxy_set_header 'Access-Control-Expose-Headers' 'x-token';
               proxy_set_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-With,Content-Type,Accept,x-access-token,Authorization,skip';
              proxy_set_header 'Content-Type' '*';
               # proxy_set_header Accept-Encoding '';
               # proxy_http_version 1.1;
               # proxy_set_header Upgrade $http_upgrade;
               # proxy_set_header Connection 'upgrade';
               # proxy_cache_bypass $http_upgrade;
               # proxy_redirect off;
               # proxy_set_header X-Forwarded-Proto https; 
        }
}

РЕДАКТИРОВАТЬ: Думаю, проблема не в SSL, а в Nginx. Потому что в localhost работает отлично, но когда я ставлю Nginx перед NodeJS, не получается. Возникает вопрос: как правильно установить content-type?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...