Задать вопрос
@VoRoN1999

Как разрешить вход без http авторизации по определённому url?

Всем привет. Мой конфиг:
server {
	listen 80;
	server_name localhost;
	root  /var/www/html;
	index index.php;

	location / {
	auth_basic "Auth";
   	auth_basic_user_file /etc/nginx/auth.htpasswd; 

	location /path/to/file.php {
		auth_basic off;
		include fastcgi_params;
		fastcgi_pass unix:/run/php/php7.4-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
	}

	location ~ \.php$ {
		include fastcgi_params;
		fastcgi_pass unix:/run/php/php7.4-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
	}
}


При входе на site.ru/path/to/file.php мне нужно, чтобы авторизация не запрашивалась, сейчас это не работает (она всегда запрашивается). Что я делаю не так?
  • Вопрос задан
  • 125 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
вместо префиксного совпадения нужно строгое, оно имеет высший приоритет:
-  location /path/to/file.php {
+  location = /path/to/file.php {
Иначе приоритетнее совпадение по регулярному выражению location ~ \.php$
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xEpozZ
@xEpozZ
Веб-разработчик
Добавьте директиву break.
В вашем случае nginx находит секцию location /path/to/file.php, но продолжает дальнейший поиск и находит еще и location ~ \.php$.
Директива break отключит это поведение для нужного location.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы