Nginx の一般的な設定とテクニックの概要

Nginx の一般的な設定とテクニックの概要

序文

この記事では、Nginx の一般的な、実用的で興味深い構成をいくつか紹介します。この記事を読んだ後、「何かを学んだ」と言っていただければ幸いです。

1つのサイトに複数のドメイン名を設定する

サーバー{
 聞く 80;
 サーバー名 ops-coffee.cn b.ops-coffee.cn;
}

server_name の後にスペースで区切られた複数のドメイン名が続く

1つのサービスで複数のサイトを構成

サーバー{
 聞く 80;
 サーバー名 a.ops-coffee.cn;

 位置 / {
 ルート /home/project/pa;
 インデックス index.html;
 }
}

サーバー{
 聞く 80;
 サーバー名 ops-coffee.cn b.ops-coffee.cn;

 位置 / {
 ルート /home/project/pb;
 インデックス index.html;
 }
}

サーバー{
 聞く 80;
 サーバー名 c.ops-coffee.cn;

 位置 / {
 ルート /home/project/pc;
 インデックス index.html;
 }
}

Nginxの仮想ホスト設定に基づいて、Nginxには3種類の仮想ホストがあります。

IP ベースの仮想ホスティング: サーバーに複数のアドレスが必要で、各サイトは異なるアドレスに対応します。この方法はあまり使用されていません。

ポートベースの仮想ホスト: 各サイトは異なるポートに対応しています。アクセスするときは、ip:portメソッドを使用してアクセスします。使用するリスンポートを変更できます。

ドメイン名ベースの仮想ホスティング: 最も広く使用されている方法です。上記の例では、ドメイン名ベースの仮想ホスティングを使用しています。前提条件は、各サイトに対応する複数のドメイン名があることです。server_nameに異なるドメイン名を入力するだけです。

nginx がアカウントとパスワードの検証を追加

サーバー{
 位置 / {
 auth_basic "ユーザー名とパスワードを入力してください";
 auth_basic_user_file キー/auth.key;
 }
}

nginx を通じてアクセスされるサービスは多数ありますが、アカウント認証機能は提供されていません。これを実現するには、nginx が提供する authbase アカウントとパスワード認証を使用できます。次のスクリプトを使用してアカウントパスワードを生成できます。

# 猫 pwd.pl 
パーレル
厳密なものを使用します。

私の$pw=$ARGV[0];
crypt($pw,$pw) を印刷します。"\n";

方向:

# perl pwd.pl ops-coffee.cn
opf8BImqCAXww
# echo "admin:opf8BImqCAXww" > key/auth.key

nginxはディレクトリ列を開きます

nginxをファイルダウンロードサーバーとして利用したい場合は、nginxディレクトリリストを有効にする必要があります。

サーバー{
 場所のダウンロード{
  自動インデックスオン;

  autoindex_exact_size をオフ;
  autoindex_localtime をオン;
 }
}

autoindex_exact_size: オン(デフォルト)の場合、ファイルの正確なサイズがバイト単位で表示されます。オフの場合、ファイルのおおよそのサイズが KB、MB、または GB 単位で表示されます。

autoindex_localtime: オフ(デフォルト)の場合、表示されるファイル時間は GMT 時間です。オンに変更すると、表示されるファイル時間はサーバー時間です。

デフォルトでは、リストされたtxtファイルにアクセスすると、ファイルの内容がブラウザに表示されます。ブラウザで直接ダウンロードしたい場合は、次の設定を追加します。

$request_filename ~* ^.*?\.(txt|pdf|jpg|png)$ の場合 {
 add_header コンテンツ配置 '添付ファイル';
}

デフォルトサイトの設定

サーバー{
 listen 80 デフォルト;
}

nginx サービスに複数の仮想ホストが作成されている場合、デフォルトの検索は上から下へ行われます。一致する仮想ホストがない場合は、最初の仮想ホストのコンテンツが返されます。デフォルトのサイトを指定する場合は、このサイトの仮想ホストを設定ファイルの最初の仮想ホストの位置に配置するか、このサイトの仮想ホストに listen default を設定します。

IPによるアクセスを許可しない

サーバー{
 listen 80 デフォルト;
 サーバー名_;

 404 を返します。
}

登録されていないドメイン名や、サーバー アドレスをサーバーにポイントする不要なドメイン名が存在する可能性があります。これはサイトに一定の影響を与えるため、IP または未設定のドメイン名へのアクセスを禁止する必要があります。上記のデフォルト ルールを使用して、すべてのデフォルト トラフィックを 404 にリダイレクトします。

上記の方法は比較的大まかです。もちろん、301 でアクセスされたときにすべての未設定のアドレスを Web サイトに直接リダイレクトするように設定することもできます。これにより、Web サイトに一定のトラフィックをもたらすこともできます。

サーバー{
 ^/(.*)$ https://ops-coffee.cn/$1 を永続的に書き換えます。
}

検証ファイルを直接返す

場所 = /XDFyle6tNA.txt {
 デフォルトタイプはテキスト/プレーンです。
 200 'd6296a84657eb275c05c31b10924f6ea' を返します。
}

多くの場合、WeChat やその他のプログラムでは、プロジェクトの所有権を確認するために、プロジェクトに txt ファイルを配置する必要があります。上記の方法では、実際にサーバーにファイルを配置しなくても、nginx を直接変更できます。

Nginxは上流リバースプロキシを構成する

http {
 ...
 アップストリームTomcats {
  サーバー 192.168.106.176 重み=1;
  サーバー 192.168.106.177 重み=1;
 }

 サーバー{
  場所 /ops-coffee/ { 
   proxy_pass http://tomcats;

   proxy_set_header ホスト $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
  }
 }

}

注意しないと、バーの有無にかかわらず proxy_pass の罠に陥る可能性があります。proxy_pass http://tomcats と proxy_pass http://tomcats/ の違いの詳細な説明は次のとおりです。

/ の違いだけですが、結果は大きく異なります。 2つのケースがあります:

1. ターゲット アドレスに URI (proxy_pass http://tomcats) が含まれていません。このとき、新しいターゲット URL では、一致する URI 部分は変更されず、以前と同じままになります。

場所 /ops-coffee/ {
 プロキシパス http://192.168.106.135:8181;
}

http://domain/ops-coffee/ --> http://192.168.106.135:8181/ops-coffee/
http://domain/ops-coffee/action/abc --> http://192.168.106.135:8181/ops-coffee/action/abc

2. ターゲット アドレスに URI が含まれています (proxy_pass http://tomcats/、/ も URI です)。この場合、新しいターゲット URL の一致する URI 部分は、このパラメータの URI に変更されます。

場所 /ops-coffee/ {
 プロキシパス http://192.168.106.135:8181/;
}

http://domain/ops-coffee/ --> http://192.168.106.135:8181
http://domain/ops-coffee/action/abc --> http://192.168.106.135:8181/action/abc

nginxアップストリームがキープアライブをオンにする

アップストリームTomcat {
 サーバー ops-coffee.cn:8080;
 キープアライブ 1024;
}

サーバー{
 位置 / {
  プロキシ_http_バージョン 1.1;
  proxy_set_header 接続 "";

  proxy_pass http://tomcat;
 }
}

ほとんどの場合、nginxはプロジェクト内でリバースプロキシとして使用されます。たとえば、nginxはtomcatに接続され、nginxはphpに接続されます。このとき、TCP接続の頻繁な作成によるリソース消費を減らすために、nginxとバックエンドサービス間のkeepaliveをオンにします。設定は次のとおりです。

keepalive: 各 nginxworker が維持できる接続の最大数を 1024 に指定します。デフォルトでは設定されていないため、nginx がクライアントとして使用されている場合、keepalive は有効になりません。

proxy_http_version 1.1: キープアライブを有効にするには、HTTP プロトコル バージョンが HTTP 1.1 である必要があります。

proxy_set_header Connection "": 古いプロトコルとの互換性を保ち、http ヘッダーの Connection close によってキープアライブが無効になるのを防ぐには、HTTP ヘッダーの Connection を適時にクリアする必要があります。

404は自動的にホームページにジャンプします

サーバー{
 位置 / {
  error_page 404 = @ops-coffee;
 }

 場所 @ops-coffee {
  書き換え .* / 永続的;
 }
}

ウェブサイトの 404 ページはあまりユーザーフレンドリーではありません。上記の設定を使用すると、404 ページが表示された後、自動的にホームページにジャンプすることができます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • オペレーターが知っておくべき 18 個の Nginx プロキシ キャッシュ構成のヒント (どれを知っていますか?)
  • nginx での接続数を制限するためのヒントを共有する
  • Nginx サーバーを最適化するためのヒントの簡単な紹介
  • Nginx Rewrite ルールと使用方法の紹介とスキルの例
  • nginx プロキシ ポート 80 からポート 443 への実装
  • URLパラメータに基づくNginx転送
  • Nginx の起動に失敗した場合のいくつかのエラー処理の詳細な説明
  • 一般的な Nginx のテクニックと例の概要

<<:  1つの記事でJavaScript DOM操作の基本を学ぶ

>>:  MySql5.7.21 インストールポイント記録メモ

推薦する

mysql data_dirの変更によって発生するエラー問題を解決する

今日は、新しく購入した Alibaba Cloud ECS 環境 (Ubuntu 16.04 LTS...

js QRコードスキャンログインの原理についての簡単な説明

目次QRコードログインの真髄QRコードを理解するシステム認証メカニズムQRコードをスキャンしてログイ...

Vueはel-tree遅延読み込みを使用して、追加、削除、変更、クエリ機能を実装します。

Vue のツリー表示については、プロジェクトが使用されています: エフェクト ダイアグラムがツリー...

Mac でソースコードから MySQL 5.7.17 をコンパイルしてインストールするチュートリアル

1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...

Linux でスレッドを作成するための pthread_create の具体的な使用法

pthread_create関数機能紹介pthread_createはUNIX環境のスレッド作成関数...

Mysql5.6.36 スクリプトのコンパイル、インストール、初期化のチュートリアル

概要この記事は、centos7.3 上で mysql5.3.6 を自動的にコンパイルしてインストール...

単一テーブルのMySQLバックアップとリストアに関する簡単な説明

A. MySQLバックアップツールxtrabackupのインストール1. Percona 公式 xt...

phpstudy から Linux への MySQL の移行に関するチュートリアル

プロジェクトの目的元のWindows環境でphpstudyを使用して構築されたMySQL 5.5.5...

5分でWebRTCビデオチャットを構築する

前回の記事では、Ubuntu 上の webrtc ベースの多人数ビデオチャット サービスの詳細なコー...

JavaScriptのプロトタイプオブジェクトを徹底的に理解しましょう

目次1. プロトタイプとは何ですか? 1.1 関数プロトタイプオブジェクト1.2 コンストラクタを使...

CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

この記事では、MySQL Workbenchのインストールと設定のチュートリアルを参考までに紹介しま...

jsの継承の6つの方法を詳しく解説

プロトタイプチェーン継承プロトタイプ継承は、ECMAScript における主な継承方法です。基本的な...

Mysqlデータテーブルでワームレプリケーションを使用する方法

簡単に言えば、MySQL ワーム レプリケーションは、クエリされたデータを指定されたデータ テーブル...

「@INC で ExtUtils/MakeMaker.pm が見つかりません」というエラーを解決する

mha4mysql をインストールする場合の手順は、おおよそ次のようになります: unzip、per...

vue2 vue3 での Echarts の詳細な使用方法

目次1. インストール2. vue2でEchartsを使用するmain.jsファイル内コンテナが与え...