Пропуск прокси-сервера Nginx - код возврата статуса с сайта, расположенного выше
Как мне вернуть HTTP STATUS CODE с http://127.0.0.1:8080/
Пример:
- http://127.0.0.1:8080/api/example возвращает 500, затем при доступе к ttp://127.0.0.1/api/example также должно возвращаться 500,
и так далее для любого другого кода состояния, пожалуйста, помогите??? провел несколько часов с этим...
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_pass_request_headers on;
gzip_static on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Status $status;
}
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_pass_request_headers on;
gzip_static on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Status $status;
}
}
}
1 ответ
Кажется, у вас есть 3 комбинации хоста: порта в игре здесь:
127.0.0.1:80
или просто127.0.0.1
- какой нгинкс обслуживает127.0.0.1:8888
- первый сервер приложений с конечной точкой/
127.0.0.1:8080
- второй сервер приложений с конечной точкой/api/
http://127.0.0.1:8080/api/example возвращает 500, затем при доступе к ttp://127.0.0.1/api/example также должно возвращаться 500,
Я не совсем уверен, что вы имеете в виду здесь.
Если вы нажимаете на прежний URL-адрес, вы подключаетесь непосредственно ко второму серверу приложений и получаете ответ 500.
Если вы переходите по последнему URL-адресу, вы подключаетесь к nginx, который передает запрос на второй сервер приложений и должен возвращать тот же ответ.
передать различные STATUS_CODE в браузер, когда запрос достигает вызова API, я возвращаю объект json, и если, например, я хочу сказать, что для запроса требуется токен аутентификации, предоставленный через куки, я бы затем отправил объект json с сообщением и 403 и так далее...
Это похоже на функциональность, которая должна быть реализована на сервере приложений (будь то Flask, Node.JS или что-то еще), а не на уровне nginx. У nginx есть возможность вернуть коды состояния, но это будет сделано в статических блоках местоположения (например, чтобы вернуть 404 в случае, если статический файл не найден).
Если ваш сервер приложений возвращает код состояния, он должен быть передан обратно в браузер. Если вы не говорите, что этого не происходит.
Возможно, немного отредактируйте расположение блоков. Вот то, что я использую и которое также работает с куки. Обратите внимание на косую черту в конце proxy_pass
линия как это поймала меня в прошлом:
location / {
proxy_set_header Host $http_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_pass http://localhost:8888/;
}