Здравствуйте. Есть nginx с установлений из стандартных пакетов Ubuntu. nginx version: nginx/1.10.3 . Хочу подключить GeoIp что бы ловить в $_SERVER разные данные. в main добавил load_module "modules/ngx_http_geoip_module.so";
http{geoip_country /var/www/pmn/data/Maxmind_GeoIp/GeoIP.dat; # the country IP database
geoip_city /var/www/pmn/data/Maxmind_GeoIp/GeoLiteCity.dat; # the city IP database...
include cfreal;
}cfreal:
### SET GEOIP Variables ###
proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3;
proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name;proxy_set_header GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
proxy_set_header GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
proxy_set_header GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
proxy_set_header GEOIP_REGION $geoip_region;
proxy_set_header GEOIP_CITY $geoip_city;
proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;
proxy_set_header GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
proxy_set_header GEOIP_LATITUDE $geoip_latitude;
proxy_set_header GEOIP_LONGITUDE $geoip_longitude;
root@site:/etc/nginx# ldconfig -v | grep GeoIP
/sbin/ldconfig.real: Path `/lib/x86_64-linux-gnu' given more than once
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-2.23.so is the dynamic linker, ignoringlibGeoIP.so.1 -> libGeoIP.so.1.6.9
делаю . print_r($_SERVER)
и не вижу никаких дополнительных значений. Может не так что делаю или нужно компилировать именно nginx ?
Не знаю как другие, но вот лично я по кускам конфига не гадаю.
> Не знаю как другие, но вот лично я по кускам конфига не
> гадаю.Вам нужен полный nginx.conf или еще что то ?
> Вам нужен полный nginx.conf или еще что то ?Все конфиги, которые работают.
Формальный вопрос - у тебя бэкенд на чём писан?
Твой PHP цепляется через FCGI? В FCGI параметры передаются через fastcgi_param.
GeoIP лучше считать в приложении, чтобы не гонять лишние строки в запросах. И сеть не грузишь и запрос парсишь быстрее.
> GeoIP лучше считать в приложении, чтобы не гонять лишние строки в запросах.
> И сеть не грузишь и запрос парсишь быстрее.Это зависит от приложения. Иметь БД загруженной в память программы может быть гораздо эффективнее, чем загружать и разбирать БД внутри скрипта (при каждом запросе).
Не думаю, что удастся сделать эффективнее, чем в nginx, хотя, конечно, эффективность зависит от правильной конфигурации.
> Не думаю, что удастся сделать эффективнее, чем в nginx, хотя, конечно, эффективность
> зависит от правильной конфигурации.Такие кунштюки тяжело делать на прокси - туда придётся затащить практически весь слой контроллера.
Типа для статики GeoIP на фиг не нужно, а вот для sign-up page - нужно. Ковыряешь только один запрос из 50, работаешь в 50 раз эффективнее. Туда же прикручиваешь memoization, вот тебе ещё 20-кратное ускорение.
>> Не думаю, что удастся сделать эффективнее, чем в nginx, хотя, конечно, эффективность
>> зависит от правильной конфигурации.
> Такие кунштюки тяжело делать на прокси - туда придётся затащить практически весь
> слой контроллера.
> Типа для статики GeoIP на фиг не нужно, а вот для sign-up
> page - нужно. Ковыряешь только один запрос из 50, работаешь в
> 50 раз эффективнее. Туда же прикручиваешь memoization, вот тебе ещё 20-кратное
> ускорение.Извините не понял вашу логику. Почему в Sign Up так нужно ?
>> GeoIP лучше считать в приложении, чтобы не гонять лишние строки в запросах.
>> И сеть не грузишь и запрос парсишь быстрее.
> Это зависит от приложения. Иметь БД загруженной в память программы может быть
> гораздо эффективнее, чем загружать и разбирать БД внутри скрипта (при каждом
> запросе).
> Не думаю, что удастся сделать эффективнее, чем в nginx, хотя, конечно, эффективность
> зависит от правильной конфигурации.Вообщем узнал что нижнее подчеркивание у меня не проходит proxy_set_header GEOIP_CITY $geoip_city; -> proxy_set_header GEOIP-CITY $geoip_city;
Сейчас всё ок. хотя
http {underscores_in_headers on
....}
>> Вам нужен полный nginx.conf или еще что то ?
> Все конфиги, которые работают.
> Формальный вопрос - у тебя бэкенд на чём писан?
> Твой PHP цепляется через FCGI? В FCGI параметры передаются через fastcgi_param.
> GeoIP лучше считать в приложении, чтобы не гонять лишние строки в запросах.
> И сеть не грузишь и запрос парсишь быстрее.Websocket идет через FCGI. а сам WEB + REST через nginx + apache. И там и там нужно это.
Не понял на счет приложения ... Это как ? include в коде при каждом вызове GeoIp.dat ?
> Не знаю как другие, но вот лично я по кускам конфига не
> гадаю.ой у меня тоже есть какие- то такие проблемы ,, и я сама не знаю как это делается