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 関数の完全なリスト (分類および要約)

1. 数学関数ABS(x) xの絶対値を返します。 BIN(x) xの2進値を返します(OCTは8...

JavaScriptプロトタイプチェーンの詳細な説明

目次1. コンストラクタとインスタンス2. プロパティプロトタイプ3. プロパティ __proto_...

Apache クロスドメイン リソース アクセス エラーの解決策

多くの場合、大規模および中規模の Web サイトでは、静的リソース (フォント ファイル、画像など)...

Vue を使用した Amap アプリケーション開発のベスト プラクティス

目次序文非同期読み込みパッケージコンポーネントコンポーネントの使用インターフェースをカスタマイズする...

MySQL UPDATE ステートメントの非標準実装コード

今日は、MySQL データベースと SQL 標準 (および他のデータベース) の UPDATE ステ...

Centos サーバーで nginx を設定する方法の例

セキュアターミナルMobaXterm_Personalをダウンロードまず、安全なターミナルをダウンロ...

JS配列の次元削減のいくつかの方法の詳細な説明

2次元配列の次元削減配列インスタンスメソッド concat と ES6 スプレッド演算子を使用した次...

Nginx フォワードプロキシとリバースプロキシの違いと原理分析

1. フォワードプロキシとリバースプロキシの違いフォワード プロキシはクライアントのプロキシとして機...

体験をデザインする: ボタンには何があるか

<br />最近、UCDChina は「インターフェース上のテキストに注意を払う」という...

Linuxサーバーのファイアウォールを変更してポートへのリモートアクセスを許可する方法

1. 問題の説明セキュリティ上の理由から、新しく構築されたサーバー クラスターでは、指定されたポート...

js はマウスインとマウスアウトによるカード切り替えコンテンツを実装します

この記事では、マウスでカード内外のコンテンツを切り替えるためのjsの具体的なコードを紹介します。具体...

MYSQL トランザクション チュートリアル Yii2.0 マーチャント引き出し機能

序文私はプログラマーとしてスタートした PHP プログラマーです。これまで、トレーニング コースで勉...

MySQL の CPU 負荷が高い問題のトラブルシューティング

MySQL による CPU 負荷の上昇今日の午後、MySQL によってサーバーの負荷が高くなる問題を...

WebページのレイアウトではIE6の互換性の問題を考慮する必要があります

下の図は、当社のウェブサイト統計システムの訪問者詳細におけるブラウザ閲覧率を示しており、IE6 が ...

Windows での MySQL 5.7.18 のインストールと設定のチュートリアル

この記事では、WindowsでのMySQL 5.7.18のインストールと設定のチュートリアルを参考ま...