2016-05-23 7 views
0

В Nginx Я проверяю, идет ли IP-адрес из заблокированной страны. Если это тогда, посетитель получает 403. Мне нужна возможность добавлять белые списки, чтобы они могли, даже если они являются частью заблокированных стран.IP-адреса белых списков в файле Nginx Virtual Host File Blocking

Я бы предпочел использовать белый список IP-адресов в местоположении nginx.conf, поэтому мне не нужно обновлять файлы более 30 виртуальных хостов. Как я могу это сделать?

В каждом из Nginx виртуальных файлов хост в/и т.д./Nginx/сайты с поддержкой

location/{ 
    if ($allowed_country = no) { 
     return 403; 
    } 

    try_files $uri $uri/ /index.php$is_args$args; 
} 

Список стран создается в /etc/nginx/nginx.conf

## GEOIP settings 
    geoip_country /usr/share/GeoIP/GeoIP.dat; 
    map $geoip_country_code $allowed_country { 
     default yes; 
     RU no; 
     BR no; 
     UA no; 
     PH no; 
     IN no; 
     CN no; 
    } 

ответ

1

Для есть фильтр на Geoip страны, а также IP-Adress вам нужно geo module Результирующее в чем-то как:

location/{ 
    if ($allowed_country = no) { 
    return 403; 
    } 

    if ($allowed_ip = no) { 
     return 403; 
    } 

    try_files $uri $uri/ /index.php$is_args$args; 
} 

Кроме того, отображение в nginx.conf

geo $allowed_ip { 
    default  no; 

    127.0.0.1  yes; 
    192.168.1.0/24 yas; 
} 

Это должно быть возможно, но map директива должна быть в контексте HTTP.

Я предлагаю иметь include в каждом vhost, имея настройки геоида в отдельном файле, чтобы быть более гибким.

+0

Hi Ben, Этот geoip уже находится в отдельном файле (GeoIP.dat), и блокировка страны работает правильно. Включение уже является частью файла nginx.conf. Я ищу способ добавления белых списков в эту функциональность, но я не знаю синтаксиса для включения его либо в функцию $ geoip_country_code $ allowed_country в файле nginx.conf, либо в каждом файле виртуального хоста. Это то, с чем мне нужна помощь. Благодаря! – ComputerGiant

+0

Понятно, я тогда неправильно понял вопрос. Способ сделать это будет [geo module] (http://nginx.org/en/docs/http/ngx_http_geo_module.html). Я обновлю свой ответ – Ben

+0

Привет, Бен, когда я реализую это или подобные решения, я получаю 403 от всех IP-адресов. Похоже, что geo $ allowed_ip по умолчанию отрицает все IP-адреса. Невозможно установить значение по умолчанию = нет и установить if ($ allowed_ip = yes) {try files ... – ComputerGiant