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

Как прикрутить простую авторизацию к сайту (nginx rewrite + htpasswd)?

Добрый день!

Никак не удается прикрутить простую авторизацию к сайту.
Что имеем: nginx+ php+fpm и простой сайт на php.

Конфиг хоста:

server {
        listen   80;
        server_name test.site.ru;
        root /var/www/test.site.ru/web;
        error_log /var/log/ispconfig/httpd/test.site.ru/error.log;
        access_log /var/log/ispconfig/httpd/test.site.ru/access.log combined;



        location / {
        index  index.php;
        auth_basic "Members Only";
        auth_basic_user_file /etc/nginx/htpasswd;
        #правила перенес из htaccess 
        rewrite ^/image /image.php last;               
        rewrite ^/web/(.*) /web/$1 last;
        rewrite ^/receiver.html /receiver.html last;
        rewrite ^/ /index.php last;
        }

        Images and static content is treated different
        location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
            access_log        off;
            expires           360d;
        }
        location ~ /\.ht {
             deny  all;
         }
          location ~ \.php$ {
            include /etc/nginx/fastcgi_params;
             fastcgi_pass 127.0.0.1:9000;
             fastcgi_index index.php;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         }
  }


Без директивы rewrite ^/ /index.php last; авторизация работает, но дальше по всем ссылкам 404 ошибка. С правилом не работает авторизация.

Подскажите пожалуйста в какую сторону копать, вероятно кто-то сталкивался уже.
  • Вопрос задан
  • 3494 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
fornit1917
@fornit1917
В location ~ \.php$ пробовали добавлять auth_basic?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
shur1k
@shur1k Автор вопроса
Попробовал, заработало. Спасибо :)
Если не трудно можете в двух словах почему не работало до этого? Можно линком на документацию.
Ответ написан
@ShamblerR
вписываем в server
error_page 555 = @pass;
        location @pass {
        auth_basic "Unauthorized";
        auth_basic_user_file /var/www/dev_htpasswd;
        proxy_pass http://127.0.0.1:82;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;


и в location /
if ($http_host ~* "^(dev|old|www.old|www.dev)\..*\..{2,8}$"){

                return 555;
                }
                if ($http_host ~* "^.*\.ks03\.ru$"){
                return 555;
                }

}


Конфиг для прокси накидал, для обычного nginx сам уже доделеш.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽