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

推薦する

MySQL 8.0.15 圧縮版インストール グラフィック チュートリアル

この記事では、参考までにMySQL 8.0.15圧縮版のインストール方法を紹介します。具体的な内容は...

MySql テーブル、データベース、シャーディング、パーティショニングの知識の詳細な説明

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

MySQL におけるデータタイムとタイムスタンプの違い

MySQL には 3 つの日付型があります。日付(年-月-日)テーブル test(hiredate ...

MySQL 起動エラー 1067 および文字セットを変更して再起動した後の無効な回復

公式サイトからmysql-5.6.37-winx64.zipの解凍バージョンをダウンロードし、構成フ...

よく使われるHTMLタグのインライン要素とブロックレベル要素の詳細な説明

ブロック要素HTMLタグ分類の詳細* 住所 - 住所* blockquote - ブロック引用* c...

MybatisはSQLクエリのインターセプションと変更の詳細を実装します

序文インターセプターの機能の 1 つは、特定のメソッドの呼び出しをインターセプトできることです。イン...

数千万のデータを扱うMySQLのページングクエリのパフォーマンスを最適化する

MySQL のデータ量が多い場合、制限ページングが使用されます。ページ数が増えると、クエリの効率が低...

Linuxでkv設定ファイルを変更するにはsedコマンドを使用します

sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...

88 秒で 1,000 万件のレコードを MySQL データベース テーブルに挿入する方法

私が使用しているデータベースはMySQLデータベースバージョン5.7ですまずデータベーステーブルを自...

js キャンバスは検証コードを実装し、検証コード機能を取得します

この記事の例では、検証コードを作成して取得するためのjsキャンバスの具体的なコードを共有しています。...

テーブル切り替えのための JavaScript プラグインのカプセル化

この記事では、テーブル切り替えプラグインを実装するためのJavaScriptのカプセル化コードを参考...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

win10環境でDockerをインストールする実装

1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...

プロジェクトのフロントエンドとバックエンドでの Echart チャートの使用に関する詳細な説明

目次序文1. プロジェクトアーキテクチャ2. Echart公式サイトにアクセスして自己分析を学ぶ2....

Bootstrap 3.0 学習ノートのボタンとドロップダウン メニュー

前回の記事はBootstrap CSS部分の簡単なレビューであり、多くの詳細が見落とされていました。...