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

Nginx разрешает доступ, если присутствует настраиваемый заголовок

Есть ли способ разрешить доступ к каталогу, только если присутствует определенный настраиваемый заголовок и значение совпадает? С apache я делал это с SetEnvIf. Как я мог это сделать с помощью nginx?

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

Я много исследовал, чтобы решить простую проблему: разрешить proxy_pass только в том случае, если запрос имеет определенный токен в заголовке. Я перепробовал все ответы здесь, и ничего не помогло, как мне понравилось. Мое окончательное решение:

location /api {
    proxy_http_version 1.1;

    if ($http_authorization != "Bearer 1234") {
        return 401;
    }

    proxy_pass http://app:3000/;
}

Ссылки:

https://stackoverflow.com/questions/45734332/nginx-not-equal-to

https://stackoverflow.com/questions/12431496/nginx-read-custom-header-from-upstream-server

Точное совпадение местоположения Nginx не вызывает сомнений

https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

Здесь дан ответ на ваш актуальный вопрос:

https://stackoverflow.com/questions/18970620/nginx-reject-request-if-header-is-not-present-or-wrong

Сказав это, почему бы не использовать базовую аутентификацию? Это делает его паролем, а не действует как пароль.

http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html