#nginx
Вопрос:
Мне нужно настроить Nginx
конфигурацию моего сайта так, чтобы пароль отображался только на моем сервере разработки. Фактически, я использую, CI/CD
какое приложение развертывается Docker
в рабочей среде, но мне не нужно показывать пароль в рабочей среде.
Сервер разработки обычно заканчивается определенным доменом, например: appname.example.com
.
Есть ли способ показать аутентификацию только в процессе разработки?
Это моя конфигурация:
server {
root /var/www/html/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
auth_basic "Restricted Content";
auth_basic_user_file /var/www/html/public/.htpasswd;
}
location ~ [^/].php(/|$) {
fastcgi_split_path_info ^(. ?.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass php-upstream;
fastcgi_index index.php;
}
}
Заранее спасибо.
Ответ №1:
Вы можете использовать map
блок для получения auth_basic
аргумента директивы из значения $host
переменной:
map $host $realm {
appname.example.com "Resticted content";
default off;
}
server {
root /var/www/html/public;
index index.php;
auth_basic $realm;
auth_basic_user_file /var/www/html/public/.htpasswd;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ [^/].php(/|$) {
...
}
}
Вы можете использовать выражения регулярных выражений с map
директивой, используя ~
модификатор, например
map $host $realm {
~appname.example.com$ "Resticted content";
default off;
}