Apache mod_geoip 安装
假设我们已经安装并运行了 Apache webserver,我们从安装 mod_geoip
开始:
UBUNTU/DEBIAN # apt-get install libapache2-mod-geoip CENTOS/REDHAT/FEDORA ( epel enabled only ) # yum install mod_geoip.x86_64
确认 geoip
和 rewrite
模块已启用:
# apache2ctl -M | grep -E "geoip|rewrite" geoip_module (shared) rewrite_module (shared)
如果上面的命令没有产生任何输出或者只列出了单个模块,请使用以下 linux 命令启用缺少的模块:
# a2enmod geoip rewrite Enabling module geoip. Enabling module rewrite.
要激活新配置,我们需要运行:
# service apache2 restart
并重新启动 Apache 网络服务器使更改生效:
# service apache2 restart
附录
ISO 3166 国家/地区代码
与 GeoIP apache 模块一起使用的 ISO 3166 国家代码列表:
A1 - "Anonymous Proxy" A2 - "Satellite Provider" O1 - "Other Country" AD - "Andorra" AE - "United Arab Emirates" AF - "Afghanistan" AG - "Antigua and Barbuda" AI - "Anguilla" AL - "Albania" AM - "Armenia" AO - "Angola" AP - "Asia/Pacific Region" AQ - "Antarctica" AR - "Argentina" AS - "American Samoa" AT - "Austria" AU - "Australia" AW - "Aruba" AX - "Aland Islands" AZ - "Azerbaijan" BA - "Bosnia and Herzegovina" BB - "Barbados" BD - "Bangladesh" BE - "Belgium" BF - "Burkina Faso" BG - "Bulgaria" BH - "Bahrain" BI - "Burundi" BJ - "Benin" BL - "Saint Bartelemey" BM - "Bermuda" BN - "Brunei Darussalam" BO - "Bolivia" BQ - "Bonaire - Saint Eustatius and Saba" BR - "Brazil" BS - "Bahamas" BT - "Bhutan" BV - "Bouvet Island" BW - "Botswana" BY - "Belarus" BZ - "Belize" CA - "Canada" CC - "Cocos (Keeling) Islands" CD - "Congo - The Democratic Republic of the" CF - "Central African Republic" CG - "Congo" CH - "Switzerland" CI - "Cote d'Ivoire" CK - "Cook Islands" CL - "Chile" CM - "Cameroon" CN - "China" CO - "Colombia" CR - "Costa Rica" CU - "Cuba" CV - "Cape Verde" CW - "Curacao" CX - "Christmas Island" CY - "Cyprus" CZ - "Czech Republic" DE - "Germany" DJ - "Djibouti" DK - "Denmark" DM - "Dominica" DO - "Dominican Republic" DZ - "Algeria" EC - "Ecuador" EE - "Estonia" EG - "Egypt" EH - "Western Sahara" ER - "Eritrea" ES - "Spain" ET - "Ethiopia" EU - "Europe" FI - "Finland" FJ - "Fiji" FK - "Falkland Islands (Malvinas)" FM - "Micronesia - Federated States of" FO - "Faroe Islands" FR - "France" GA - "Gabon" GB - "United Kingdom" GD - "Grenada" GE - "Georgia" GF - "French Guiana" GG - "Guernsey" GH - "Ghana" GI - "Gibraltar" GL - "Greenland" GM - "Gambia" GN - "Guinea" GP - "Guadeloupe" GQ - "Equatorial Guinea" GR - "Greece" GS - "South Georgia and the South Sandwich Islands" GT - "Guatemala" GU - "Guam" GW - "Guinea-Bissau" GY - "Guyana" HK - "Hong Kong" HM - "Heard Island and McDonald Islands" HN - "Honduras" HR - "Croatia" HT - "Haiti" HU - "Hungary" ID - "Indonesia" IE - "Ireland" IL - "Israel" IM - "Isle of Man" IN - "Netherlands" IO - "British Netherlandsn Ocean Territory" IQ - "Iraq" IR - "Iran - Islamic Republic of" IS - "Iceland" IT - "Italy" JE - "Jersey" JM - "Jamaica" JO - "Jordan" JP - "Japan" KE - "Kenya" KG - "Kyrgyzstan" KH - "Cambodia" KI - "Kiribati" KM - "Comoros" KN - "Saint Kitts and Nevis" KP - "Korea - Democratic People's Republic of" KR - "Korea - Republic of" KW - "Kuwait" KY - "Cayman Islands" KZ - "Kazakhstan" LA - "Lao People's Democratic Republic" LB - "Lebanon" LC - "Saint Lucia" LI - "Liechtenstein" LK - "Sri Lanka" LR - "Liberia" LS - "Lesotho" LT - "Lithuania" LU - "Luxembourg" LV - "Latvia" LY - "Libyan Arab Jamahiriya" MA - "Morocco" MC - "Monaco" MD - "Moldova - Republic of" ME - "Montenegro" MF - "Saint Martin" MG - "Madagascar" MH - "Marshall Islands" MK - "Macedonia" ML - "Mali" MM - "Myanmar" MN - "Mongolia" MO - "Macao" MP - "Northern Mariana Islands" MQ - "Martinique" MR - "Mauritania" MS - "Montserrat" MT - "Malta" MU - "Mauritius" MV - "Maldives" MW - "Malawi" MX - "Mexico" MY - "Malaysia" MZ - "Mozambique" NA - "Namibia" NC - "New Caledonia" NE - "Niger" NF - "Norfolk Island" NG - "Nigeria" NI - "Nicaragua" NL - "Netherlands" NO - "Norway" NP - "Nepal" NR - "Nauru" NU - "Niue" NZ - "New Zealand" OM - "Oman" PA - "Panama" PE - "Peru" PF - "French Polynesia" PG - "Papua New Guinea" PH - "Philippines" PK - "Pakistan" PL - "Poland" PM - "Saint Pierre and Miquelon" PN - "Pitcairn" PR - "Puerto Rico" PS - "Palestinian Territory" PT - "Portugal" PW - "Palau" PY - "Paraguay" QA - "Qatar" RE - "Reunion" RO - "Romania" RS - "Serbia" RU - "Russian Federation" RW - "Rwanda" SA - "Saudi Arabia" SB - "Solomon Islands" SC - "Seychelles" SD - "Sudan" SE - "Sweden" SG - "Singapore" SH - "Saint Helena" SI - "Slovenia" SJ - "Svalbard and Jan Mayen" SK - "Slovakia" SL - "Sierra Leone" SM - "San Marino" SN - "Senegal" SO - "Somalia" SR - "Suriname" SS - "South Sudan" ST - "Sao Tome and Principe" SV - "El Salvador" SX - "Sint Maarten" SY - "Syrian Arab Republic" SZ - "Swaziland" TC - "Turks and Caicos Islands" TD - "Chad" TF - "French Southern Territories" TG - "Togo" TH - "Thailand" TJ - "Tajikistan" TK - "Tokelau" TL - "Timor-Leste" TM - "Turkmenistan" TN - "Tunisia" TO - "Tonga" TR - "Turkey" TT - "Trinidad and Tobago" TV - "Tuvalu" TW - "Taiwan" TZ - "Tanzania - United Republic of" UA - "Ukraine" UG - "Uganda" UM - "United States Minor Outlying Islands" US - "United States" UY - "Uruguay" UZ - "Uzbekistan" VA - "Holy See (Vatican City State)" VC - "Saint Vincent and the Grenadines" VE - "Venezuela" VG - "Virgin Islands - British" VI - "Virgin Islands - U.S." VN - "Vietnam" VU - "Vanuatu" WF - "Wallis and Futuna" WS - "Samoa" YE - "Yemen" YT - "Mayotte" ZA - "South Africa" ZM - "Zambia" ZW - "Zimbabwe"
根据国家/地区地理位置阻止流量
如果我们决定根据国家/地区地理位置阻止传入流量,我们可以通过编辑位于 /etc/apache2/sites-available/
中的相关站点的配置文件来实现。
下面的 mod_geoip 配置将阻止中国和荷兰国家:
<Location /> SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry Deny from env=BlockCountry </Location>
需要重新加载 Apache 才能应用上述更改。
或者,我们还可以将以下几行插入到相应的“.htaccess”文件中:
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry Deny from env=BlockCountry
网站如何防止某个国家的用户访问?
网站如何根据用户的国家重定向到不同语言版本HTML页面?
我们将学习如何使用 Apache 的 geoip
mod 根据访问者的国家/地区地理位置阻止或者重定向网络流量。
根据国家/地区地理位置重定向流量
现在我们启用了 mod_geoip
,我们可以编辑位于 /etc/apache2/sites-available/
或者相应的 .htaccess
文件中的相关站点配置文件,以根据地理位置重定向流量。
在下面的示例中,我们要将所有来自中国和荷兰的传入流量重定向到新 URL http://example.com
:
RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|IN)$ RewriteRule ^(.*)$ http://example.com/$1 [L]
请注意,如果我们将上述配置插入站点的配置文件中,则很可能需要重新启动 apache 网络服务器使更改生效:
# service apache2 reload
日期:2020-07-07 20:54:49 来源:oir作者:oir