Я пытаюсь запустить nginx перед моим приложением nodejs (я использую машину Windows)
Мое приложение NodeJS работает в порту 3000
Я запустил Nginx на порту 8070
Когда я пытаюсь ударить http: // локальный: 8070 / из браузера возникает проблема, указанная ниже
Это моя конфигурация Nginx
server {
listen 8070;
server_name localhost;
location / {
access_log logs/access.log;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://my-app/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
Но все же я получаю следующую ошибку
XMLHttpRequest не может загрузить localhost: 3000 / my-app / api / engineOptions / get. Ответ на предполетный запрос не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin. Происхождение 'http: // локальный: 8070'поэтому не разрешен доступ.
Мне что-то не хватает в конфигурации nginx относительно директивы Access-Control-Allow-Origin?
Проблема здесь в том, что ваш JavaScript запрашивает ресурс из localhost:3000
, который является сервером NodeJS, и в ответе на этот запрос нет Access-Control-Allow-Origin
ответ.
Вы должны убедиться, что все запросы ваших JS-файлов идут в localhost:8070
, то есть ваш nginx. Таким образом, все ответы получат правильный заголовок.