Я настраиваю изображение докера с установленным nginx-lua. Сценарий состоит в том, чтобы иметь базовую аутентификацию при постановке, но не в производстве. Моя идея состояла в том, чтобы иметь переменную ENV с названием сцены и проверить значение в файле nginx.conf.Основная аутентификация NGINX на основе переменной окружения
Содержание docker-compose.yml
файла (для постановки, а также для производства стадии окр будет prod
конечно):
docs-router:
build: ./nginx
environment:
- API_BASE_URI=staging.example.com
- DOCS_STATIC_URI=docs-staging.example.com
- STAGE=staging
ports:
- "8089:8089"
- "8090:8090"
Содержание nginx.conf
файла:
...
env API_BASE_URI;
env DOCS_STATIC_URI;
env STAGE;
...
http {
server {
listen 8089 default_server;
charset utf-8;
resolver 8.8.8.8;
access_log off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~ ^(/.*\.(?:apib|svg))?$ {
set_by_lua_block $api_base_uri { return os.getenv("API_BASE_URI") }
set_by_lua_block $stage { return os.getenv("STAGE") }
set $unprotected "prod";
if ($stage = $unprotected) {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
proxy_pass https://$api_base_uri$1;
proxy_set_header Host $api_base_uri;
}
...
}
}
Но это не работает. Любая идея, как я могу это достичь?
Итак, в чем ваш вопрос? –
Эта конфигурация не работает, и я хотел бы знать, что моя конфигурация неверна, или эта реализация не будет работать с NGINX. –
Моя цель состоит в том, чтобы иметь одно изображение докеры с надлежащей конфигурацией NGINX, которая может быть развернута на любом этапе и запрашивает аутентификацию только в определенной среде. –