Nginx обратный прокси-сервер - запросите базовые c учетные данные аутентификации и передайте их целевому API - PullRequest
0 голосов
/ 09 января 2020

Я написал REST API в Haskell, предоставив HTML для просмотра в браузере, и в настоящее время пытаюсь разместить его с использованием обратного прокси Nginx. Однако моему бэкэнду требуются учетные данные Basi c Auth, которые сервер Nginx не предоставляет.

Как настроить обратный прокси-сервер, чтобы он запрашивал учетные данные при выполнении запроса GET через браузер, но не проверяет их и передает их на сервер? Я попробовал около полдюжины предложений по stackoverflow, reddit et c. но не нашел работающего решения.

Это моя текущая конфигурация:

server {
    listen 80;
    location / {
        proxy_pass http://127.0.0.1:8000/;

        auth_basic "user-realm";
        proxy_set_header X-Forwarded-User $http_authorization;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_pass_header Accept;
        proxy_pass_header Server;
        proxy_http_version 1.1;
        proxy_set_header Authorization $http_authorization;
        #proxy_pass_header Authorization;
        proxy_set_header ns_server-ui yes;
    }
}

Вот несколько статей, которые я пробовал или читал:

Все или большинство, кажется, сосредоточены на том, как позволить Nginx взять на себя авторизацию, однако я хочу, чтобы она передавала только учетные данные, введенные в браузере.

1 Ответ

0 голосов
/ 10 января 2020

После нескольких часов попыток я обнаружил, что моя конфигурация даже не используется, так как по какой-то причине она всегда совпадает с конфигурацией по умолчанию.
Я не придумал, как решить эту проблему, но заставил прокси работать так, как задумал, когда изменил

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

на этот

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                proxy_pass http://localhost:8000;
        }

* Затем 1012 * автоматически запрашивает учетные данные и передает их бэкэнду. (Так что, в конце концов, мой конфиг просто не использовался, и поэтому ничего не перенаправлялось на бэкэнд)


Надеюсь, это сэкономит кому-то время на поиск в будущем:)

...