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 インストールポイント記録メモ

推薦する

Linux 上の Vim で色とテーマを変更する方法

Vim は Linux でよく使用されるテキスト エディターです。 Vim は、Sublime や ...

Dockerでイメージ情報を表示する方法

この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...

Docker で ElasticSearch と Kibana をインストールするためのサンプル コード

1. はじめにElasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを...

Linux の操作とメンテナンスの基本的なスワップ パーティションと LVM 管理のチュートリアル

目次1. スワップパーティション SWAP 1.1 スワップファイルを作成する1.2 スワップパーテ...

jsはウォーターフォールフローのボトムアウトによるデータの動的ロードを実現します

この記事では、ウォーターフォールフローが底に達したときにデータを動的にロードするためのjsの具体的な...

Element UI を使用してページにページング ナビゲーション バーを追加する方法

必要ページング バーを追加します。これにより、ページにジャンプしたり、ページ番号に従って特定のページ...

セマンティック HTML タグの紹介

ここ数年、ウェブサイト開発では DIV+CSS が非常に人気があり、当時は大きな騒動を引き起こしまし...

MySQL binlog を開く手順

Binlog は、MySQL データの変更を記録するために使用されるバイナリ ログ ファイルです。B...

React Nativeがシミュレータにリンクできない件について

React Native は、現在人気のオープンソース JavaScript ライブラリ React...

Vue プロジェクトで SVG コンポーネントをパッケージ化して構成する手順

最近新しい会社に入社しました。プロジェクトに携わった後、タイトルアイコンが svg で作られていると...

Vueはmockjsを使用してシミュレートされたデータケースの詳細を生成します

目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...

小規模プログラムへのデータキャッシュ機構の応用と実装

ミニプログラムデータキャッシュ関連知識データ キャッシュ: データをキャッシュして、アプレットを終了...

Xampp サーバーで MySQL パスワードを変更する方法 (画像付き)

今日、PHP で作業しているときに、Xampp サーバーに付属の mysql データベースを使用する...

Vue ターンテーブル抽選の簡単な実装

この記事では、ホイール抽選を簡単に実装するためのVueの具体的なコードを参考までに共有します。具体的...

Vue の element-ui コンポーネントのデフォルトの CSS スタイルを変更する 4 つの方法

目次序文1. グローバル統合オーバーライドを使用する2. .vueファイルを変更する3. コンポーネ...