引入nginx的geo模塊
geo指令使用ngx_http_geo_module模塊提供的。默認情況下,nginx有加載這個模塊除非人為的 –without-http_geo_module。
ngx_http_geo_module模塊可以用來創建變量,其值依賴于客戶端ip地址。使用方法如下:
geo指令 語法:?geo?[$address]?$variable?{?...?} 默認值:?— 配置段:?http
定義從指定的變量獲取客戶端的ip地址。默認情況下,nginx從$remote_addr變量取得客戶端ip地址,但也可以從其他變量獲得。
在/usr/local/nginx/conf/nginx.conf文件內加入以下配置 geo?$geo?{ ????ranges;??????????#使用以地址段的形式定義地址,這個參數必須放在首位??? ????default?dn; ????include?ip_geo.conf; ??} ????upstream?wuhan.server?{ ??????server???192.168.155.98:8081; ????} ????upstream?shanghai.server?{ ??????server???192.168.155.98:8082; ????} ????upstream?shenzhen.server?{ ??????server???192.168.155.98:8083; ????} ????upstream?dn.server?{ ??????server???192.168.155.98:8084; ????} ?server?{ ????listen????80; ????server_name?192.168.155.98?jiaoyu.media.cloudp.cc; ??????root???html; ??????index?index.html?index.htm; ????location?~*?.xml$?{ ??????root?/data/video; ????} ????location?/?{ ??????proxy_redirect?off; ??????proxy_set_header?host?$host; ??????proxy_set_header?x-real-ip?$remote_addr; ??????proxy_set_header?x-forwarded-for? ??????$proxy_add_x_forwarded_for; ??????proxy_pass?http://$geo.server$request_uri; ????} ??} ??server?{ ????listen?8081; ????server_name?192.168.155.98; ????location?/?{ ??????rewrite?^?$scheme://192.168.155.106$request_uri??permanent; ????} ??} ??server?{ ????listen?8082; ????server_name?192.168.155.98; ????location?/?{ ????????rewrite?^?$scheme://192.168.155.107$request_uri??permanent; ????} ??} server?{ ????listen?8083; ????server_name?192.168.155.98; ????location?/?{ ????????rewrite?^?$scheme://192.168.155.109$request_uri??permanent; ????} ??} ??server?{ ????listen?8084; ????server_name?192.168.155.98; ????location?/?{ ????????rewrite?^?$scheme://jiaoyu.dn.cloudp.cc$request_uri??permanent; ????} }
在/usr/local/nginx/conf/文件下增加ip_geo.conf文件,用來對ip區域進行劃分,注意劃分的時候不能出現ip重疊現象,不然會出現”overlaps”報錯
vim?/usr/local/nginx/conf/ip_geo.conf 192.168.128.6-192.168.128.10?wuhan; 192.168.128.11-192.168.128.15?shanghai; 192.168.128.16-192.168.128.20?shenzhen;
也可以以10.2.0.0/16 wuhan;這種形式來進行ip分段,這樣在nginx.conf中就不不需要使用range指令來進行定義
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END