Назад | Перейти на главную страницу

Nginx Proxy_pass - код возврата из формы вышестоящего сайта

Как мне вернуть КОД СТАТУСА HTTP из http://127.0.0.1:8080/

Пример:

и так далее для любого другого кода состояния, помогите пожалуйста ??? провел несколько часов с этим ...

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;
        }
    }

}

Кажется, у вас есть 3 комбинации хост: порт:

  • 127.0.0.1:80 или просто 127.0.0.1 - какой nginx обслуживает
  • 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, и если, например, я хочу сказать, что для запроса требуется токен аутентификации, предоставленный через файлы cookie, я бы отправил объект json с сообщением и 403 и так далее ...

Это похоже на функциональность, которая должна быть реализована на сервере приложений (например, Flask, Node.JS или что-то еще), а не на уровне nginx. nginx имеет возможность коды статуса возврата но это будет сделано в блоках статического местоположения (например, чтобы вернуть 404 в случае, если статический файл не найден).

Если ваш сервер приложений возвращает код состояния, он должен быть передан обратно в браузер. Если вы не говорите, что этого не происходит.

Возможно, немного отредактируйте блоки локации. Вот что я использую и который также работает с файлами cookie. Обратите внимание на косую черту в конце 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/;
}