잠시만 기다려 주세요

     '싸우지 않는 이재명을 규탄한다. 민생충, 협치충, 역풍충.. 국민들은 치가 떨린다.'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (16)  |  여러가지 팁 (1059)  |  추천 및 재미 (156)  |  자료실 (22)  |  
시사, 이슈, 칼럼, 평론, 비평 (613)  |  끄적거림 (136)  |  문예 창작 (716)  |  바람 따라 (75)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    리눅스 서버

리눅스 서버 - nginx geoip 모듈 사용하기, 설정
이 름 : 바다아이   |   조회수 : 10426         짧은 주소 : https://www.bada-ie.com/su/?571591781165

일단 nginx 에 geoip 모듈이 적재되어 컴파일 되어 있어야 합니다.
대부분 패키지 설치하실테니... 이미 적용되어 있으실 겁니다.
안되어 있으면 nginx 컴파일 다시 설치 하셔야 합니다.

nginx -V

root@server1:~# nginx -V
nginx version: nginx/1.10.0 (Ubuntu)
built with OpenSSL 1.0.2g-fips 1 Mar 2016
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads


이제 젤루 중요한 geoip 데이터 파일이 있어야 합니다.
아래처럼 수동으로 받아도 좋지만 패키지 설치하시는 게 좋습니다.

자동

yum install geoip

수동

mkdir /etc/nginx/geoip

cd /etc/nginx/geoip
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz


대부분 패키지 설치 하시면 /usr/share/GeoIP/GeoIP.dat 여기가 경로일 겁니다.

자 이제 설정을 해 볼까요? 2가지 입니다. 대부분...

1. nginx.conf 파일에 geoip 경로 넣기
2. fastcgi_params 파일에 해당 설정 넣기...

도시 정보는 대부분 잘 안씁니다. 정확성도 떨어지고 하니....
나라코드하고 나라이름 정도만 설정해 두세요... proxy 는 그냥 참고만 하세요.. 거의 사용 안 하실테니...

 

Now we configure nginx. Open /etc/nginx/nginx.conf...

nano /etc/nginx/nginx.conf

... and add the geoip_country and geoip_city directives to the http {} container:

[...]
http {

 ##
 # Basic Settings
 ##

 geoip_country /etc/nginx/geoip/GeoIP.dat; # the country IP database
 geoip_city /etc/nginx/geoip/GeoLiteCity.dat; # the city IP database
[...]

The geoip_country directive makes the following variables available:

  • $geoip_country_code - two-letter country code, for example, RU, US.
  • $geoip_country_code3 - three-letter country code, for example, RUS, USA.
  • $geoip_country_name - the (verbose) name of the country, for example, Russian Federation, United States, etc.

The geoip_city directive provides the following variables:

  • $geoip_city_country_code - two-letter country code, for example, RU, US.
  • $geoip_city_country_code3 - three-letter country code, for example, RUS, USA.
  • $geoip_city_country_name - the name of the country, for example, Russian Federation, United States - if available.
  • $geoip_region - the name of region (province, region, state, province, federal land, and the like), for example, Moscow City, DC - if available.
  • $geoip_city - the name of the city, for example, Moscow, Washington, Lisbon, etc. - if available.
  • $geoip_postal_code - zip code or postal code - if available.
  • $geoip_city_continent_code - if available.
  • $geoip_latitude - latitude - if available.
  • $geoip_longitude - longitude - if available.

In order to make these variables available to your PHP scripts as well, we must set a few fastcgi_param directives. It is best to do this in the file /etc/nginx/fastcgi_params where the other fastcgi_param directives are:

nano /etc/nginx/fastcgi_params

[...]
### SET GEOIP Variables ###
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;

(Make sure you have the line include /etc/nginx/fastcgi_params; in your location ~ .php$ {} container in your vhost configuration, because otherwise, the above configuration is useless for your vhost.)

If you use nginx as a reverse proxy and want to pass the GeoIP variables to the backend, you should create/edit the file /etc/nginx/proxy.conf...

nano /etc/nginx/proxy.conf

... and add the following lines to it:

[...]
### 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;

(Make sure you use the line include /etc/nginx/proxy.conf; in your nginx proxy configuration because otherwise, the backend cannot use the GeoIP variables.)
 

자 이제 설정 다끝났습니다. nginx 하고 php-fpm 다시 시작하시면 됩니다.
예제 파일 하나 만드셔서 아래 입력 하시고 테스트 해 보세요..
 

<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>


| |





      1 page / 5 page
번 호 카테고리 제 목 이름 조회수
148 리눅스 서버 samba ... , ... 바다아이 517
147 리눅스 서버 postfix main.cf ... 바다아이 3584
146 리눅스 서버 /etc/crontab ... 바다아이 2303
145 리눅스 서버 - MEMTEST, , 바다아이 3466
144 리눅스 서버 top , top 바다아이 4293
143 리눅스 서버 , systemd-networkd, archlinux network setting 바다아이 5412
142 리눅스 서버 mirror .. ... 바다아이 5897
141 리눅스 서버 [Ubuntu] (swapfile) , ... 바다아이 5710
140 리눅스 서버 ufw , iptables 바다아이 7010
139 리눅스 서버 ... grub . submenu, grub-mkconfig 바다아이 5798
138 리눅스 서버 CentOS 7 Upgrade Kernel, centos 바다아이 7658
137 리눅스 서버 , dd , 바다아이 5719
136 리눅스 서버 ... ntp .. ... 바다아이 6757
135 리눅스 서버 archlinux netstat , netstat ... 바다아이 6500
134 리눅스 서버 ps , ps option 바다아이 6249
133 리눅스 서버 , swap , ... swap . 바다아이 6461
132 리눅스 서버 crontab , .... 바다아이 6426
131 리눅스 서버 ssh , ssh 바다아이 7494
130 리눅스 서버 SSH SSH , ssh-keygen rsa 바다아이 7078
129 리눅스 서버 , date : () , () , 바다아이 7270
128 리눅스 서버 aws lightsail, ssh .. .pem 바다아이 12286
127 리눅스 서버 , ubuntu generic kernel 바다아이 7645
126 리눅스 서버 .. apt ... 바다아이 7549
125 리눅스 서버 ... ubuntu kernel compile 바다아이 10185
124 리눅스 서버 nginx http2 , . 바다아이 8992
123 리눅스 서버 psql libreadline.so.7: cannot open shared object file: No such file or directory 바다아이 9357
122 리눅스 서버 ssh .bashrc , bash .. .bash_profile 바다아이 8681
121 리눅스 서버 , , 바다아이 7893
120 리눅스 서버 rc.local ... , 바다아이 8643
119 리눅스 서버 ? - IPv4 Subnetting, (Subnet Mask) 바다아이 8356
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천  실행시간 : 0.06582
to webmaster... gogo sea. gogo sea.