Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする

yum で nginx-module-geoip をインストールします

http_geoip_module の使用シナリオ

1. 国内と海外のHTTPアクセスルールを区別する

2. 国内の都市と地域を区別してHTTPアクセスルールを作成する

yumをインストールしたら、インストールされたモジュールファイルを見つけます

nginxがyunを使用してインストールされている場合、通常は/etc/nginx/modules/ディレクトリにインストールされます。

注意: nginx が yum によってインストールされておらず、ソース コードからコンパイルされている場合は、このモジュールを使用して nginx を再インストールしてコンパイルする必要があります。その後、このモジュールを手動で追加する必要はありません。

手動でモジュールを追加する

モジュールは、nginx.conf設定ファイルのヘッダー内のhttpと同じレベルでロードされます。

モジュールをロードします "modules/ngx_http_geoip_module.so";
モジュール「modules/ngx_stream_geoip_module.so」をロードします。

GeoIP は地域情報を読み取るために MaxMind が提供するデータベース ファイルに基づいているため、IP の地域ファイルをダウンロードする必要があります。

このデータベースはバイナリであり、テキスト エディターで開くことはできません。これを読み取るには、上記の GeoIP ライブラリが必要です。

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz #国の地域 IP
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz #都市の地域 IP

次に解凍します

モジュールをロードします "modules/ngx_http_geoip_module.so";
モジュール「modules/ngx_stream_geoip_module.so」をロードします。

.......


http{
geoip_country /etc/nginx/geoip/GeoIP.dat; #国IPを読み込む
geoip_city /etc/nginx/geoip/GeoLiteCity.dat; #都市のIPを読み込む

.........

 サーバ
 {
 ......



 位置 / {
 #中国語でない場合は403を返します。
 $geoip_country_code が CN の場合
  403 を返します。
 }
 }
 #国と都市の情報を返す location /myip {
 デフォルトタイプはテキスト/プレーンです。
 200 "$remote_addr $geoip_country_name $geoip_country_code $geoip_city" を返します。
 }



....
 }
}

次に、IP アドレス/myip にアクセスして、IP の国と都市の情報を返します。

NginxとGeoIPモジュールを使用してIPの地域情報を読み取る上記の方法は、エディターがあなたと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 地域負荷分散を実現する Nginx geoip モジュール

<<:  MySQL 1対多関連クエリのページングエラー問題の解決方法

>>:  Windows 8 での MySQL Community Server 5.6 のインストールと設定のチュートリアル

推薦する

JavaScript を使用して userAgent を通じていくつかの一般的なブラウザを判別する方法

序文通常、h5 ページを作成するときは、WeChat、QQ、Weibo などのエコシステム内でトラフ...

HTML の隠しフィールドの紹介と例

基本的な構文: <input type="hidden" name=&qu...

Mac MySQL のルートパスワードをリセットするチュートリアル

免責事項:このパスワード リセット方法は、Homebrew によってインストールされた MySQL ...

MySQLのデッドロックチェック処理の通常の方法

通常、デッドロックが発生すると、重みが最も小さい接続が強制終了され、ロールバックされます。ただし、最...

MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

この記事では、MySQL 最適化のヒントで重複したエントリを削除する方法を例を使って説明します。ご参...

MySQL 8.0.15 のダウンロードとインストールの詳細なチュートリアルは初心者にとって必須です。

この記事では、MySQL 8.0.15をダウンロードしてインストールするための具体的な手順を参考まで...

中国における中国語ドメイン名の人気は新たなクライマックスを迎えた

<br />外交部などの中央政府機関、各レベルの地方政府、その他の国家機関や部門が率先し...

高性能ウェブサイトの最適化ガイド

パフォーマンスの黄金律:エンドユーザーの応答時間のわずか 10% ~ 20% が HTML ドキュメ...

VMware での Ubuntu と Windows 間のファイル共有

この記事では、VMware 環境下で Ubuntu と Windows 間でファイルを共有する方法を...

シンプルなタブバー切り替えコンテンツバーを実装するJavaScript

この記事では、タブバーの切り替えコンテンツバーを簡単に実現するためのJavaScriptの具体的なコ...

Nginx 外部ネットワーク アクセス イントラネット サイト構成操作

背景:サイトはフロントエンドとバックエンドから分離されています: vue+springbootフロン...

シンプルなビデオ連射機能を実装する JavaScript CSS3

この記事では、最も単純なビデオ連射機能をシミュレートするデモを作成します。アイデア:再生する動画と同...

Ubuntu 18.0.4 MySQL 8.0.20 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.20 のインストールおよび設定方法は、参考としてグラフィック チュートリアルにま...

入力できない無効な値はアクションレイヤーに渡すことができません

フォームを入力不可にしたい場合は、フォームを次のように設定します。コードをコピーコードは次のとおりで...