@Rokis
Не стыдно спрашивать, стыдно не пытаться...

Как ограничить доступ к /user на сервере с nginx в Drupal?

Здравствуйте.

Есть VPS сервер с nginx+php-fpm. На нём есть сайт на друпале. При определении location /user в его конфиге - отдаёт ошибку 404. Причём ошибка появляется независимо от того, что я в нём прописываю (хоть пустой).

Вот как я делаю:

location /user {
allow 111.111.11.11;
deny all;
include /etc/nginx/conf.d/php.conf; #тут подключаю php
}


Если пишу site.ru/user - отдаёт 404, если пишу site.ru/?q=user - открывается страница, но при авторизации отдаёт 404. Аналогичная ситуация и с блокировкой админки:

location /admin {
allow 111.111.11.11;
deny all;
include /etc/nginx/conf.d/php.conf; #тут подключаю php
}


На wordpress код работает. В чём особенность друпала в этом вопросе? Из-за чего такое может происходить? Подскажите пожалуйста.
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
Всё потому что вы не понимаете как работает try_files и rewrite. Nginx пытается найти папку user в корне сайта. Её в друпале по умолчанию нет и об этом прям так и написано "2: No such file or directory". Других правил которые бы подходили или переписывали урл до /index.php?q=user в случаи "allow" нет, поэтому до запуска друпала дело не доходи. Достаточно сделать вот так и всё "заработает":

location /user  {
        allow 111.111.11.11;
        deny all;
        try_files $uri /index.php?$query_string;
}


"заработает" в кавычках потому что в приведенном вами "конфиге сайта" много всякого мусора и его использование чревато проблемами с безопасностью в том числе.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы