nginxアクセス制御の実装例

nginxアクセス制御の実装例

高性能で軽量なウェブサービスソフトウェアであるNginxについて

高い安定性 システムリソースの消費量が少ない HTTP 同時接続に対する高い処理能力

1台の物理サーバーで30,000~50,000の同時リクエストをサポートできる

環境

  • Linux サーバー (192.168.13.128)
  • Windows10テストマシン

1. Windows 上の LAMP に必要な圧縮ソフトウェア パッケージを共有します (ここで質問がある場合は、以前のブログ関連記事を参照してください)

次に、Linuxのリモート共有を使用してファイルを取得し、mntディレクトリにマウントします。

[root@localhost ~]# smbclient -L //192.168.100.3/ ##リモート共有アクセス SAMBA\rootのパスワードを入力してください: 

    シェア名 タイプ コメント
    --------- ---- -------
    LAMP-C7 ディスク  
[root@localhost ~]# mount.cifs //192.168.100.3/LAMP-C7 /mnt ##/mntディレクトリにマウント

3. Nginxをコンパイルしてインストールする

1. ソースパッケージを/optに解凍して確認する

[root@localhost ~]# cd /mnt ##マウントポイントディレクトリに切り替えます [root@localhost mnt]# ls
apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt
apr-util-1.6.0.tar.gz エラー.png mysql-5.6.26.tar.gz
awstats-7.6.tar.gz httpd-2.4.29.tar.bz2 nginx-1.12.0.tar.gz
cronolog-1.6.2-14.el7.x86_64.rpm kali.jpg php-5.6.11.tar.bz2
[root@localhost mnt]# tar zxvf nginx-1.12.0.tar.gz -C /opt ##Nginx ソース パッケージを /opt に解凍します [root@localhost mnt]# cd /opt/ ##解凍したディレクトリに切り替えます [root@localhost opt]# ls
nginx-1.12.0 RH

2. コンパイルに必要な環境コンポーネントパッケージをインストールする

[root@localhost opt]# yum -y install \
gcc \ //C言語 gcc-c++ \ //C++言語 pcre-devel \ //pcre言語ツール zlib-devel //データ圧縮ライブラリ

3. プログラムユーザーnginxを作成し、Nginxをコンパイルする

[root@localhost opt]# useradd -M -s /sbin/nologin nginx ##安全でログインできないプログラムユーザーを作成します [root@localhost opt]# id nginx
uid=1001(nginx) gid=1001(nginx) グループ=1001(nginx)
[root@localhost opt]# cd nginx-1.12.0/ ##nginxディレクトリに切り替えます [root@localhost nginx-1.12.0]# ./configure \ ##nginxを設定します
> --prefix=/usr/local/nginx \ ##インストールパス> --user=nginx \ ##ユーザー名> --group=nginx \ ##ユーザーグループ> --with-http_stub_status_module ##ステータス統計モジュール

4. コンパイルしてインストールする

[root@localhost nginx-1.12.0]# make ##コンパイル...
[root@localhost nginx-1.12.0]# make install ##インストール...

5. システムの認識を容易にするためにnginxの起動スクリプトを最適化する

[root@localhost nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##システムが nginx 起動スクリプトを認識できるようにソフトリンクを作成します [root@localhost nginx]# nginx -t ##設定ファイル nginx の構文を確認します: 設定ファイル /usr/local/nginx/conf/nginx.conf の構文は正常です
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf のテストが成功しました
[root@localhost nginx]# nginx ##ngnixを開く
[root@localhost nginx]# netstat -ntap | grep 80 ##ポートを確認します。nginx は tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 39620/nginx: master を開いています 
[root@localhost nginx]# systemctl stop firewalld.service ##ファイアウォールをオフにする [root@localhost nginx]# setenforce 0

6. elinksウェブテストツールをインストールしてテストを実行する

[root@localhost nginx]# yum install elinks -y ##elinks ソフトウェアをインストール [root@localhost nginx]# elinks http://localhost ##nginx Web ページをテスト

7. サービスの開始、再読み込み、終了

[root@localhost nginx]# killall -s QUIT nginx ##停止するか、killall -3 nginx を使用します
[root@localhost nginx]# killall -s HUP nginx ## 再起動するか、killall -1 nginx を使用してください
[root@localhost nginx]# nginx ##開く

8. サービス管理を容易にするための管理スクリプトを作成する

[root@localhost nginx]# killall -s QUIT nginx ##停止するか、killall -3 nginx を使用します
[root@localhost nginx]# killall -s HUP nginx ## 再起動するか、killall -1 nginx を使用してください
[root@localhost nginx]# nginx ##開く

Nginx アクセスステータス統計

HTTP_STUB_STATUS ステータス統計モジュールを有効にする
nginx -VはインストールされたNginxに統計モジュールが含まれているかどうかを確認できます

1. nginx設定ファイルを変更する

[root@localhost ~]# cd /usr/local/nginx/conf ##設定ファイルディレクトリに切り替えます [root@localhost conf]# vim nginx.conf ##Nginx設定ファイルサーバーを変更します {
 聞く 80;
 server_name www.kgc.com; ##ドメイン名を指定します charset utf-8; ##中国語の文字セット #access_log logs/host.access.log main;

 位置 / {
  ルートhtml;
  インデックス index.html index.htm;
 }
 location /status { ## ステータス統計情報を追加 stub_status on;
 access_log オフ;
 }

次に、ドメイン名解決用のDNSサーバーをインストールします。

1. バインドサービスをインストールする

[root@localhost conf]# yum install bind -y ##DNSサービスをインストール

2. メイン設定ファイル/etc/named.confを設定します。

 [root@localhost conf]# vim /etc/named.conf ##メイン設定ファイルオプション {
    listen-on port 53 { any; }; ##ローカルマシンがすべてをリッスンするように設定します listen-on-v6 port 53 { ::1; };
    ディレクトリ "/var/named";
    ダンプファイル "/var/named/data/cache_dump.db";
    統計ファイル "/var/named/data/named_stats.txt";
    memstatistics ファイル "/var/named/data/named_mem_stats.txt";
    再帰ファイル "/var/named/data/named.recursing";
    secroots ファイル "/var/named/data/named.secroots";
    allow-query { any; }; ##すべて許可

3. ゾーン設定ファイル(etc/named.rfc1912.zones)を設定します。

[root@localhost conf]# vim /etc/named.rfc1912.zones ##ゾーン設定ファイルを設定します zone "localhost" IN { ##テンプレートを次のタイプにコピーします master;
        ファイル "named.localhost";
        更新を許可する {なし; };
};

zone "kgc.com" IN { ##localhostをkgc.comに変更
        タイプマスター;
        ファイル "kgc.com.zone"; ##ゾーンデータ構成ファイルを作成する allow-update { none; };
};

4. ゾーンデータ構成ファイル(kgc.com.zone)を編集します。

[root@localhost conf]# cd /var/named
[root@localhost named]# cp -p named.localhost kgc.com.zone 
##テンプレートをkgc.com.zoneとしてコピーします
[root@localhost named]# vim kgc.com.zone ##ゾーンデータ設定ファイル $TTL 1D を編集します
@ IN SOA @ rname.invalid. (
                  0 ; シリアル
                  1D ; 更新
                  1H;再試行
                  1W ; 期限切れ
                  3H ) ; 最小
        NS@
        127.0.0.1 です
www IN A 192.168.13.128 ##このマシンに IPv6 を削除し、ドメイン名解決アドレスを追加します

5. ファイアウォールをオフにしてサービスを開始する

[root@localhost named]# systemctl start named ##DNS サービスを開始 [root@localhost named]# systemctl stop firewalld.service ##ファイアウォールを閉じる [root@localhost named]# setenforce 0 ##拡張機能を閉じる

6. win10テストマシンを使用してテストする


認証ベースのアクセス制御

設定手順は基本的にApacheと同じです

ユーザーパスワード認証ファイルを生成し、メイン構成ファイルを対応するディレクトリに変更し、認証構成項目を追加し、サービスを再起動してテストにアクセスします。

1. メイン設定ファイルを変更する

[root@localhost ~]# cd /usr/local/nginx/conf ##設定ファイルのディレクトリに切り替えます [root@localhost conf]# vim nginx.conf ##Nginx設定ファイルの場所を変更します / {
  auth_basic "secret"; ##検証タイプ auth_basic_user_file /usr/local/nginx/passwd.db; ##検証ファイルパス root html;
  インデックス index.html index.htm;
 }

2. httpd-toolsツールキットをインストールし、パスワード認証ファイルを設定する

[root@localhost conf]# yum install httpd-tools -y ##ツール パッケージをインストール[root@localhost conf]# htpasswd -c /usr/local/nginx/passwd.db test ##パスワード認証ファイルの設定新しいパスワード: ##パスワードを入力新しいパスワードを再入力: ##パスワードの確認ユーザー test のパスワードを追加
[root@localhost conf]# cat /usr/local/nginx/passwd.db ##パスワード認証ファイルを表示 test:$apr1$LqqHZeX3$24E7/HeacTVRzKA7nvSgY/
[root@localhost conf]# service nginx stop ## サービスをシャットダウンします [root@localhost conf]# service nginx start ## サービスを開始します

3. Win10テストマシンを使用してテストする


以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx ベースのアクセス制御と接続制限の実装
  • Nginx のアクセス制御とパラメータ調整方法
  • Nginx のリクエスト制限とアクセス制御の実装に関する簡単な説明
  • Nginx アンチホットリンク、Nginx アクセス制御、Nginx 解析 PHP 設定の詳細な説明
  • nginx アクセス制御の 2 つの方法

<<:  Windows に異なる (2 つの) バージョンの MySQL データベースをインストールする詳細なチュートリアル

>>:  Vue3.0+vite2は動的非同期コンポーネントの遅延読み込みを実装します

推薦する

alpineをベースにdockerfileで作成したtomcatイメージの実装

1.アルパインイメージをダウンロードする [root@docker43 ~]# docker pul...

史上最も簡単な MySQL データのバックアップと復元のチュートリアル (パート 2) (パート 37)

データのバックアップと復元パート3の詳細は次のとおりです基本的な概念:バックアップ、現在のデータまた...

MySQL の concat 関数についての簡単な説明。MySQL でフィールドの前または後に文字列を追加する方法

MySQL で concat 関数を使用する方法: CONCAT(文字列1、文字列2、…)戻り値は、...

jsはタイトルと説明のキーワードを検出し、見つかった場合は置換するか他のページにジャンプします。

キーワード 一般タイトルには、クラック、キー、シリアル番号、キージェネレータなどの単語を含めることは...

Alibaba Cloud Centos7のインストールとSVNの設定

1. SVNサーバーをインストールする yum でサブバージョンをインストール2. SVNバージョン...

Reactはページの透かし効果の全プロセスを実現します

目次序文1. 使用例2. 実施プロセス3. コンポーネントコード要約する序文1. cavans では...

JavaScript の 7 つのデータ型の詳細な説明

目次序文:詳しい紹介:練習する:要約する序文: Python、Java、Cシリーズなど、すべての主要...

Elementはスクリプトを使用して新しいコンポーネントを自動的に構築します

目次背景element-ui の自動構築はどのように機能しますか?メイクファイル新しい.jsファイル...

MySql の null 関数の使用の共有

MySql の null に関する関数IFNULL ISNULL NULLIF IFNULL使用法:...

NodeJSプロセスがどのように終了するかについて詳しく説明します

目次序文積極的な撤退例外、拒否、および発行されたエラー信号まとめ序文NodeJS プロセスが終了する...

Linux スワップ パーティション (詳細説明)

目次リナックス1. SWAPとは2. swappiness は何を調節しますか? 3. スワップ操作...

MySQL マルチインスタンス インストール ブート自動起動サービス設定プロセス

1.MySQLの複数インスタンスMySQL マルチインスタンスとは、1 台以上のマシン上で複数の M...

マウスで画像を動かすJavaScript

この記事では、マウスの動きに追従する画像を実現するためのJavaScriptの具体的なコードを参考ま...

Windows Server 2016 でサービスを展開する方法 (グラフィック チュートリアル)

導入インストールするシステムの数が多い場合、USB フラッシュ ドライブまたは CD を使用した手動...