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. 基本概念酸3.自動コミット4. トランザクション分離レベル5. 同時実行の一貫性の問題6....

入力のid属性とname属性の違いの例

長い間ウェブサイトを作ってきましたが、入力時のnameとidの違いがまだわかりません。最近jQuer...

Linux サーバーに SSH パスワードなしでログインする方法

テスト サーバーにログインするたびに、必ず ssh ログインのパスワードを入力する必要があります。ロ...

div画像マーキーシームレス接続実装コード

コードをコピーコードは次のとおりです。 <html> <ヘッド> <ス...

MySQLの日付加算と減算関数の詳細な説明

1. 追加時間()指定した秒数を日付に追加する select addtime(now(),1); -...

vue router-view のネストされた表示実装

目次1. ルーティング構成2. Vueページのネスト3. ネストされた関係1. ルーティング構成 定...

MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)

オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...

Docker を使用して静的 Web サイト アプリケーションを作成する (複数の方法)

静的ウェブサイトをホストできるサーバーは数多くあります。この記事では、nginx、apache、to...

nginx「504 ゲートウェイタイムアウト」エラーを解決する

ウェブサイトを作成する学生は、アクセス時に一部の nginx サーバーが 504 Gateway T...

CSS3 弾性拡張ボックスの詳細な説明

使用フレキシブル ボックスはフロントエンドの Web ページ レイアウトで重要な役割を果たしますが、...

docker nginxコンテナの起動とローカルへのマウントの詳細な説明

まず、nginx コンテナ内の構造:コンテナを入力します: docker exec -it b511...

Docker で Harbor パブリック リポジトリを構築する方法の例

前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbo...

Vue での this.$set の使用に関する詳細な説明

目次Vue での this.$set の使用使用なぜレスポンシブなのか?分析する要約するVue での...

imgタグ間のスペースの問題の詳細な説明

IMG タグの基本分析 HTML5 では、img タグには 4 つの要素があります。 (1) src...

MySQL 8.0.11 のインストールと設定方法のグラフィックチュートリアル MySQL 8.0 の新しいパスワード認証方法

この記事では、参考までにMySQL8.0.11のインストールと設定方法、およびMySQL8.0の新し...