lighttpd 1.4.x
https://www.lighttpd.net/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
3.7 KiB
148 lines
3.7 KiB
{{{ |
|
#!rst |
|
============================== |
|
ip based geographic lookups... |
|
============================== |
|
|
|
----------------- |
|
Module: mod_geoip |
|
----------------- |
|
|
|
|
|
|
|
.. contents:: Table of Contents |
|
|
|
Requirements |
|
============ |
|
|
|
:Packages: GeoIP C API & Library (http://www.maxmind.com/download/geoip/api/c/) |
|
|
|
Overview |
|
======== |
|
|
|
mod_geoip is a module for fast ip/location lookups. It uses MaxMind GeoIP / |
|
GeoCity databases. |
|
If the ip was found in the database the module sets the appropriate |
|
environments variables to the request, thus making other modules/fcgi be |
|
informed. |
|
|
|
.. note:: |
|
|
|
Currently only country/city databases are supported because they have a free |
|
version that i can test. |
|
|
|
Configuration Options |
|
======================== |
|
|
|
mod_geoip uses two configuration options. |
|
|
|
1) geoip.db-filename = <path to the geoip or geocity database> |
|
2) geoip.memory-cache = <enable|disable> : default disabled |
|
|
|
if enabled, mod_geoip will load the database binary file to |
|
memory for very fast lookups. the only penalty is memory usage. |
|
|
|
.. note:: |
|
|
|
mod_geoip will determine the database type automatically so if you enter |
|
GeoCity databse path it will load GeoCity Env. |
|
|
|
Environment |
|
=========== |
|
|
|
Every database sets it's own ENV: |
|
|
|
GeoIP (Country): |
|
---------------- |
|
|
|
:: |
|
|
|
GEOIP_COUNTRY_CODE |
|
GEOIP_COUNTRY_CODE3 |
|
GEOIP_COUNTRY_NAME |
|
|
|
GeoCity: |
|
-------- |
|
|
|
:: |
|
|
|
GEOIP_COUNTRY_CODE |
|
GEOIP_COUNTRY_CODE3 |
|
GEOIP_COUNTRY_NAME |
|
GEOIP_CITY_NAME |
|
GEOIP_CITY_POSTAL_CODE |
|
GEOIP_CITY_LATITUDE |
|
GEOIP_CITY_LONG_LATITUDE |
|
GEOIP_CITY_DMA_CODE |
|
GEOIP_CITY_AREA_CODE |
|
|
|
Examples |
|
======== |
|
|
|
mod_geoip + php |
|
--------------- |
|
|
|
when using fastcgi (not only php) you can access mod_geoip env and do as you |
|
please. this example just prints all mod_geoip envs to the client, html. |
|
|
|
Config-file :: |
|
|
|
geoip.db-filename = "/your-geoip-db-path/GeoCityLite.dat" |
|
geoip.memory-cache = "enable" |
|
|
|
index.php :: |
|
|
|
<?php |
|
$country_code = $_SERVER['GEOIP_COUNTRY_CODE']; |
|
$country_code3 = $_SERVER['GEOIP_COUNTRY_CODE3']; |
|
$country_name = $_SERVER['GEOIP_COUNTRY_NAME']; |
|
|
|
$city_region = $_SERVER['GEOIP_CITY_REGION']; |
|
$city_name = $_SERVER['GEOIP_CITY_NAME']; |
|
$city_postal_code = $_SERVER['GEOIP_CITY_POSTAL_CODE']; |
|
$city_latitude = $_SERVER['GEOIP_CITY_LATITUDE']; |
|
$city_long_latitude = $_SERVER['GEOIP_CITY_LONG_LATITUDE']; |
|
$city_dma_code = $_SERVER['GEOIP_CITY_DMA_CODE']; |
|
$city_area_code = $_SERVER['GEOIP_CITY_AREA_CODE']; |
|
|
|
echo "<html>\n<body>\n\t<br>\n"; |
|
echo 'Country Code: ' . $country_code . '<br>'; |
|
echo 'Country Code 3: ' . $country_code3 . '<br>'; |
|
echo 'Country Name: ' . $country_name . '<br>'; |
|
echo '<br>'; |
|
echo 'City Region: ' . $city_region . '<br>'; |
|
echo 'City Name: ' . $city_name . '<br>'; |
|
echo 'City Postal Code: ' . $city_postal_code . '<br>'; |
|
echo 'City Latitude: ' . $city_latitude . '<br>'; |
|
echo 'City Long Latitude: ' . $city_long_latitude . '<br>'; |
|
echo 'City DMA Code: ' . $city_dma_code . '<br>'; |
|
echo 'City Area Code: ' . $city_area_code . '<br>'; |
|
echo "</html>\n</body>"; |
|
?> |
|
|
|
country based redirect |
|
---------------------- |
|
|
|
Config-file :: |
|
|
|
$HTTP["host"] =~ "www.domain.com" { |
|
url.rewrite = ( "" => "/redirect.php") |
|
} |
|
|
|
redirect.php :: |
|
|
|
<?php |
|
$country_code = $_SERVER['GEOIP_COUNTRY_CODE']; |
|
header ('Location: http://' . $country_code . '.domain.com/'); |
|
?> |
|
|
|
.. note:: |
|
|
|
Currently it is not possible to redirect based on mod_geoip directly in |
|
lighttpd config file. But i believe with the relase of lighttpd mod_magnet |
|
it would be. (mod_magnet will be available in lighttpd 1.4.12+) |
|
|
|
Downloads |
|
========= |
|
mod_geoip.c (http://trac.lighttpd.net/trac/attachment/wiki/Docs/ModGeoip/mod_geoip.c) |
|
}}}
|
|
|