INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / RSS / GPG

Блокировка стран через nginx + geoip + недосказанное в остальных мануалах

№ 4795 В разделе Sysadmin от January 18th, 2013,
В подшивках: ,

Вы уже наверняка установили nginx с поддержкой GeoIP и распаковали куда-нибудь саму базу адресов. Нет? Ну так в сети куча мануалов. Зачем плодить их? А вот теперь самое интересное!

в секции http нужно подключить ваши конфиги:

    geoip_country /opt/GeoIP.dat;

    map $geoip_country_code $bad_country {
    default 1;
        include geo/good_countries;
    }

А теперь фишка! Об этом не написали в других мануалах. Конфиг самого сервера:

server {
    listen   80 default; ## listen for ipv4
    server_name  blablabla.ru;

    root   /var/www/blablabla.ru;
    index index.php index.html index.htm;

    error_page 405 403 /geoblock.html;
    location ~* /geoblock.html {
        internal;
        root /etc/nginx/errors;
        default_type        text/html;
    }

    location / {
        if ($bad_country){
            return 405; }
        if ($remote_addr = 31.24.28.1){
            return 405; }
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
        fastcgi_index index.php;
        fastcgi_intercept_errors on;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Нужно было проверки IP поместить в секцию location / {}, о чем заботливо не написали ни в одном мануале 🙂

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Облачная платформа
Яндекс.Метрика

Fortune cookie: "What kind of a god would crucify his own son?" [Firesign Theatre]