geoip を使用して nginx で地域を制限する方法

geoip を使用して nginx で地域を制限する方法

このブログは仕事のメモです

環境:

nginx バージョン: nginx/1.14.0

Centos バージョン: Centos7

要件は次のとおりです。

国内と海外の IP アドレスを区別して、異なるページにジャンプします。最後に、nginx のサードパーティ モジュール geoip を使用してこれを実現します。その利点については説明しません。インターネット上に多くの説明があります。設定方法を見てみましょう。

私のシステムは nignx.repo で構成されています。モジュールを追加して再コンパイルせずに、yum を使用して geoip モジュールを直接インストールしました。

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

geoipデータベースファイルをダウンロードする

cd /etc/nginx
mkdir geoipdat
cd ジオイプダット

wget をダウンロード http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz を取得します。

gunzip GeoIP.dat.gz を解凍します
gunzip GeoLiteCity.dat.gz

ニーズに応じてnginxを設定する

まず、nginx.conf で geoip ライブラリをロードし、次のように設定します。

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

ユーザー nginx;
ワーカープロセス 1;

error_log /var/log/nginx/error.log 警告;
pid /var/run/nginx.pid;


イベント {
  ワーカー接続 1024;
}


http {
  /etc/nginx/mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';

  access_log /var/log/nginx/access.log メイン;

  ファイル送信オン;
  #tcp_nopush オン;

  キープアライブタイムアウト65;

  #gzip オン;

  /etc/nginx/conf.d/*.conf を含めます。
}

仮想ホストを次のように設定します。

geoip_country /etc/nginx/geoipdat/GeoIP.dat;
geoip_city /etc/nginx/geoipdat/GeoLiteCity.dat;


サーバー{
  聞く 80;
  server_name ローカルホスト;
  位置 / {
 ルート /opt;
 ($geoip_country_code = CN)の場合{
 書き換え (.*) /zh$1 break;
 }
    書き換え (.*) /en$1 break;
  }
    エラーページ 500 502 503 504 /50x.html;
  場所 = /50x.html {
    ルート /usr/share/nginx/html;
  }

}

optディレクトリは次のとおりです

[root@VM_0_15_centos opt]# ツリー
。
|
└── ja
│ └── 索引.html
└── ja
  └──index.html

上記は単なる簡単な構成です。 。 。 。

nginx で地域制限に geoip を使用する上記の方法は、エディターが皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginxは特定のページへのIPアクセスを制限します
  • 同じ IP のアクセス頻度を制限するように nginx を設定する方法
  • Nginx サーバーの ip と user_gent によるアクセス制限方法の分析
  • nginx 制限 IP による SMS インターフェースへの悪意のある呼び出しの処理方法
  • Nginxは、同じ期間内の特定のIPへの訪問とリクエストの数を制限します。サンプルコード
  • Nginx サーバーが IP アクセスを制限するさまざまな状況の完全な分析
  • Nginx で同時 IP とダウンロード速度を制限する方法
  • 同時 IP アクセスを制限し、IP 接続を制限するように nginx と apache を設定する方法
  • Nginx をベースに特定の IP への短期アクセス数を制限する

<<:  MySQL 5.7.16 無料インストール版のインストールと設定方法のグラフィックチュートリアル

>>:  VueとFlask間の通信の実装

推薦する

HTML で Web ページに動的な時計を書く

HTML を使用して動的な Web クロックを作成します。コードは次のとおりです。 <!DOC...

MySQL パフォーマンス チューニングについて知っておくべき 15 個の重要な変数 (要約)

序文: MYSQL は最も人気のある WEB バックエンド データベースです。最近、NOSQL がま...

CSS3で実装された炎のアニメーション

成果を達成する実装コードhtml <div class="コンテナ">...

Windows に mysql5.7.28 winx64 の解凍バージョンをインストールするための詳細なチュートリアル

目次1. 解凍する2. データフォルダを作成する3. MySQLに環境変数を追加する3.1 コントロ...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

Ubuntu 18.04 システムでの Redis および phpredis 拡張機能のインストールと設定の詳細な説明

この記事では、Ubuntu 18.04 に Redis と phpredis 拡張機能をインストール...

40以上の美しいWebフォームデザイン例

Web フォームは、訪問者と Web サイト所有者間の主要なコミュニケーション チャネルです。フィー...

SQL 面接の質問: 時間差の合計を求める (重複は無視)

ある会社の BI 職の面接を受けたとき、面接で SQL に関する質問がありました。一見すると非常に簡...

Centos7 に yum を使用して MySQL をインストールし、リモート接続を実現する方法

Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...

JS でオブジェクト プロパティを簡単にトラバースするいくつかの方法

目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...

jsはreduceメソッドを使用してコードをよりエレガントにします

序文実際のプロジェクトでは、最も一般的な処理は計算とループロジックである可能性があります。配列でre...

折りたたまれたテーブル行要素のバグ

例を見てみましょう。コードは次の通り非常にシンプルです。コードをコピーコードは次のとおりです。 &l...

MySQL データ型における DECIMAL の使用法の詳細な説明

MySQL データ型における DECIMAL の使用法の詳細な説明MySQL のデータ型には、INT...

uniapp プロジェクトをデスクトップ アプリケーションとしてパッケージ化する方法

Electronのインストール cnpm 電子をインストール -g electron-package...

MySQLデータベースのbinlogクリーンアップコマンドの詳細な説明

概要今日は主に、MySQL データベースから binlog ログを正しく削除する方法を紹介します。ロ...