ограничить доступ к URL-адресу администратора по IP-адресу в django с помощью nginx и gunicorn

Я пытаюсь ограничить доступ к разделу администратора моего приложения django, используя простой контроль доступа на основе хоста в nginx. К сожалению, nginx, похоже, не выполняет запрос конфигурации:

это моя настройка для этого конкретного раздела в nginx:

# gunicorn setup
location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }


 location /admin/ { # restrict access to admin section
    allow 192.168.0.1;
    deny all;
 }

Это по-прежнему блокирует мой IP-адрес 192.168.0.1. Что я делаю не так? Есть ли другой способ заблокировать доступ к разделу /admin/ приложения django?


person jcuot    schedule 05.03.2014    source источник


Ответы (1)


Я нашел решение этой проблемы, заменив местоположение /admin/ следующим:

location ^~ /admin/ { # restrict access to admin section
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    allow 192.168.0.1;
    deny all;
}

Надеюсь, это сэкономит кому-то долгие поиски в Интернете. Буду признателен за ответы, предлагающие лучшее решение.

person jcuot    schedule 05.03.2014
comment
Есть ли способ настроить это на уровне пушки? Я спрашиваю, потому что я развертываю свое приложение с помощью Docker и не хочу иметь зависимость от моего контейнера nginx-proxy. Я хочу четко отделить оба друг от друга, поэтому я хотел бы настроить это на уровне веб-сервера пушки. - person headbanger; 27.12.2019