понедельник, 25 июня 2018 г.

nginx + php-fpm + GeoIP + https

1) Качаем MaxMind базу geoIP в формате .dat и в /etc/nginx.conf добавляем в директиву http {...}

    ###GeoIP##
    geoip_country /etc/nginx/geoip/GeoIP.dat;
    geoip_city /etc/nginx/geoip/GeoLiteCity.dat;



2)
в /etc/nginx/conf.d/ssl.conf в директиве обработчика php-fpm добавляем след строки.

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
        root /var/www/html/;
        include fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
        fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
        fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
        fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
        fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
        fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
        fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
        fastcgi_param GEOIP_REGION $geoip_region;
        fastcgi_param GEOIP_CITY $geoip_city;
        fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;
        fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
        fastcgi_param GEOIP_LATITUDE $geoip_latitude;
        fastcgi_param GEOIP_LONGITUDE $geoip_longitude;
    }


3) тестовая страница geoip.php для проверки.

<html>
<body>
<?php

$geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
/*
$geoip_country_code = $_SERVER['GEOIP_COUNTRY_CODE']; // works as well
*/$geoip_country_code3 = getenv(GEOIP_COUNTRY_CODE3);
$geoip_country_name = getenv(GEOIP_COUNTRY_NAME);

$geoip_city_country_code = getenv(GEOIP_CITY_COUNTRY_CODE);
$geoip_city_country_code3 = getenv(GEOIP_CITY_COUNTRY_CODE3);
$geoip_city_country_name = getenv(GEOIP_CITY_COUNTRY_NAME);
$geoip_region = getenv(GEOIP_REGION);
$geoip_city = getenv(GEOIP_CITY);
$geoip_postal_code = getenv(GEOIP_POSTAL_CODE);
$geoip_city_continent_code = getenv(GEOIP_CITY_CONTINENT_CODE);
$geoip_latitude = getenv(GEOIP_LATITUDE);
$geoip_longitude = getenv(GEOIP_LONGITUDE);

echo 'country_code: '.$geoip_country_code.'<br>';
echo 'country_code3: '.$geoip_country_code3.'<br>';
echo 'country_name: '.$geoip_country_name.'<br>';

echo 'city_country_code: '.$geoip_city_country_code.'<br>';
echo 'city_country_code3: '.$geoip_city_country_code3.'<br>';
echo 'city_country_name: '.$geoip_city_country_name.'<br>';
echo 'region: '.$geoip_region.'<br>';
echo 'city: '.$geoip_city.'<br>';
echo 'postal_code: '.$geoip_postal_code.'<br>';
echo 'city_continent_code: '.$geoip_city_continent_code.'<br>';
echo 'latitude: '.$geoip_latitude.'<br>';
echo 'longitude: '.$geoip_longitude.'<br>';
?>
</body>
</html>


Комментариев нет:

Отправить комментарий