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

推薦する

Linux での MySQL データベースのアンインストール

Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...

スライダーを作成するためのネイティブ js ドラッグ アンド ドロップ機能のサンプル コード

ドラッグ アンド ドロップはフロントエンドでよく使われる機能であり、多くのエフェクトで js のドラ...

Centos7のFirewalldファイアウォールの基本コマンドの詳細な説明

1. Linuxファイアウォールの基礎Linux ファイアウォール システムは主にネットワーク層で動...

JS で Websocket ベースのマルチターミナル ブリッジング プラットフォームを実装する方法

目次1. デバッグ対象2. WebSocketの機能3. ソケット接続を確立する3.1 部屋の作成方...

MySQL の起動時に InnoDB エンジンが無効になる問題の解決方法

問題を見つける今日、仕事中に、ローカル データベースから仮想マシン CentOS 6.6 上のデータ...

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

州と市町村の連携を簡単に実現するJavaScript

この記事では、省と市の簡単な連携を実現するためのJavaScriptの具体的なコードを参考までに紹介...

VirtualBox の仮想ディスク vdi ファイルの容量を拡張する方法 (グラフィック チュートリアル)

VirtualBoxのインストールディレクトリを見つけます。ディレクトリ内には容量を拡張するために...

MySQLデータベーストリガーの詳細な説明

目次1 はじめに2 トリガーの紹介3 トリガーを作成する4 トリガーを表示5. トリガーの削除6 結...

MySQL 8.0.19 では、間違ったパスワードを 3 回入力するとアカウントがロックされるようになりました (例)

MySQL 8.0.19 では、間違ったパスワードを 3 回入力するとアカウントがロックされるよう...

Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法

序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...

初心者向けのMySQLデータベースとテーブルDDLの作成と操作の学習

目次1. データベースを操作する1.1 データベースを作成する1.2 データベースをクエリする1.3...

MySQL 5.5 の導入に関する問題

MySQL の導入現在、会社ではプラットフォーム運用を通じてMySQLを導入しています。金曜日、プラ...

Linux チェックアップ、Linux の状態 (ネットワーク IO、ディスク、CPU、メモリ) を把握

目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...

Dockerデータのバックアップとリカバリプロセスの詳細な説明

データのバックアップ操作は非常に簡単です。次のコマンドを実行します。 docker run --vo...