nginx не доставляет ошибки на фронт
Все уже из гуглил что мог, что кроме как этот пост пока вариантов нет как решить сей вопрос) Имеем nginx вот с такими настройками
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream app_servers {
server 14.144.144.144:8000;
}
server {
listen 8080;
server_name _;
location / {
proxy_pass http://app_servers;
proxy_redirect off;
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-Host $server_name;
proxy_set_header Accept-Encoding "";
add_header 'Access-Control-Expose-Headers' 'Content-Disposition';
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range, content-disposition, authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}
}
server {
gzip on;
gzip_types text/html, text/plain, application/json, application/javascript, text/css text/javascript application/x-javascript;
gzip_vary on;
listen 80;
server_name _;
server_tokens off;
root /usr/share/nginx/html;
index index.html;
location / {
include mime.types;
try_files $uri $uri/ /index.html;
}
}
}
Статика раздается с 80 порта, запросы отправляются с помощью axios на nginx и он уже проксирует всю эту историю на сервер с 8000 портом.
Вот если что настройки axios
export const BASE_URL = "http://14.144.144.144:8080"
export const $API = axios.create({
baseURL: BASE_URL + "/api/v1",
headers: {
"Content-Type": "application/json",
accept: "application/json",
}
})
Проблема заключается в том, что когда я отправляю запрос, который завершается успехом, то мне все приходит в полном порядке. Например как:
Но когда запрос завершается с ошибкой, то вместо того что я вижу в swagger и postman
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"indicatorId": "123456789",
"error": "ERROR MESSAGE"
"$.data.id": [
"The JSON value could not be converted to ..."
]
}
}
Я получаю ошибки с CORS
Access to XMLHttpRequest at 'http://14.144.144.144:8080/api/v1/indicators/shuffle' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
GET http://14.144.144.144:8080/api/v1/indicators/shuffle net::ERR_FAILED 400 (Bad Request)
И вместо содержательного ответа, где будет статус и ошибки, мне в catch падает вот это:
И собственно мой главный вопрос заключается в том куда девается error и status, почему возникают CORS при неуспешном запросе и как это все настроить так, чтобы nginx все таки мне возвращал нормальный ответ, который и задуман сервером. Заранее спасибо :)