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間の通信の実装

推薦する

Ubuntu 16.04 に nvidia ドライバー + CUDA + cuDNN をインストールする詳細なチュートリアル

準備1. GPUがCUDAをサポートしているかどうかを確認するlspci | grep -i nvi...

Win7 での mysql5.5 インストール グラフィック チュートリアル

MySQL のインストールは比較的簡単なので、通常は次のステップに直接進み、注意が必要な点に集中する...

画像プレビュー付きのアップロードフォームの完全な HTML

画像プレビュー機能付きのアップロードフォーム、完全なHTMLコードは次のとおりです。 <htm...

CSS3のwebkit-box-reflectを巧みに使用して、さまざまな動的効果を実現します。

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

JS を使用して要素がビューポート内にあるかどうかを確認する方法

序文要素がビューポート内にあるかどうかを監視する2つの方法を共有する1. 位置計算Element.g...

JavaScript配列重複排除の詳細な説明

目次1. アレイ重複排除2. 配列内のオブジェクトの重複排除3. 配列内の同じフィールドに基づいて別...

ウェブデザインレイアウトの理解

<br />矛盾が生じます。私たちのような小さな工房では、デザインとレイアウトは基本的に...

HTML と CSS を書くための 6 つの最も効果的な方法

この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...

CentOS7 に YUM 経由で MySQL 5.7 をインストールする詳細な手順

1. インストールパッケージを保存する場所に移動しますcd /home/lnmp 2. MySQL ...

Vue でルートをジャンプする方法をご存知ですか?

目次最初の方法: router-link (宣言型ルーティング) 2番目の方法: router.pu...

VMware Workstation 12 Pro Linux インストール チュートリアル

この記事は、VMware Workstation 12 ProのインストールLinuxチュートリアル...

CSS3で実装された6つの境界遷移効果

6つの効果実装コードhtml <h1>CSS 境界遷移</h1> <セ...

HTML マルチヘッダーテーブルコード

1. マルチヘッダーテーブルコードコードをコピーコードは次のとおりです。 <!DOCTYPE ...

Postman に基づく HTTP インターフェース テスト プロセスの分析

偶然、素晴らしい人工知能のチュートリアルを発見したので、みんなと共有せずにはいられませんでした。この...

2つのシンプルなメニューナビゲーションバーの例

メニューバーの例 1: コードをコピーコードは次のとおりです。 <!DOCTYPE html ...