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 のインストールと設定のチュートリアル

推薦する

JSONObject の使用方法の詳細な説明

JSONObject は単なるデータ構造であり、JSON 形式のデータ構造 ( key-value構...

Clickhouse Docker クラスターの展開と構成を例を使って説明します

目次前面に書かれた環境の展開Zookeeper クラスタの展開Clickhouse クラスターの展開...

Vue+canvas は、ウォーターフォール チャートを上から下までリアルタイムに更新する効果を実現します (QT と同様)

早速ですが、デモ画像をご紹介します。実装されている機能は、左側に凡例、右側にウォーターフォール チャ...

Linux システム修復モード (シングル ユーザー モード)

目次序文1. シングルユーザーモードでの一般的なバグ修正2. シングルユーザーモードでシステムパスワ...

MySQL 8.0 の binlog の詳細な説明

1 はじめにバイナリ ログは、データを持つ、またはデータを変更する可能性がある SQL ステートメン...

win2008R2 64 ビット システムでの mysql5.7.17 のインストールと構成の例

123WORDPRESS.COM では、さまざまな環境での MYSQL の他のバージョンのインストー...

MySQLにおけるテーブルインデックスの定義方法と導入

概要インデックスは、テーブル内の 1 つ以上の列に基づいて DBMS によって特定の順序で作成される...

Docker プライベート サーバー イメージを定期的にクリーンアップする方法

CI を利用してリリース用の Docker イメージをビルドすることで、全員のバージョンリリース効率...

Tomcat ディレクトリ構造の詳細な紹介

tomcat の解凍されたディレクトリを開くと、次のディレクトリ構造が表示されます。 1.Tomca...

Vue で Openlayer を使用して読み込みアニメーション効果を実現する

注意: スコープアニメーションは使用できません。 ! ! ! GIF経由 <テンプレート>...

基本的な HTML ディレクトリの問題 (相対パスと絶対パスの違い)

相対パス - ファイルを参照する Web ページの場所に基づいて確立されたディレクトリ パス。そのた...

標準SQL更新ステートメントの3つの用途についての簡単な理解

1. 環境: MySQL-5.0.41-win32 Windows XP プロフェッショナル2. テ...

Vue の el-table は自動天井効果を実現します (固定をサポート)

目次序文実装のアイデア効果:使用:メインソースコード:序文多くのケースを見た結果、単純な観点からは、...

MySQL トランザクション同時実行問題の解決

開発中にこのような問題に遭遇しましたビデオ視聴記録が 100 に更新されると、視聴されたことを意味し...

MySQL 8.0.15 のインストールと設定のグラフィックチュートリアルと Linux でのパスワード変更

このブログは、MySQL8.0.15 を正常にインストールしたことを思い出すために書きました。以前は...