nginx 設定ファイルは主に 4 つの部分に分かれています。 main{#(グローバル設定) http{#Server upstream{} #(負荷分散サーバー設定: 主に負荷分散と一連のバックエンドサーバーの設定に使用されます) server{ #(ホスト設定: 主にホストとポートを指定するために使用) location{}# (URL マッチング機能の場所の設定) } } } server は main を継承し、location は server を継承し、upstream は他の設定を継承せず、継承されることもありません。 1. メイングローバル構成 実行中のプロセス数、実行中の ID など、実行時に特定のビジネス機能 (HTTP サービスや電子メール サービス プロキシなど) に関連しない nginx の一部のパラメータ。 ユーザー www www; ワーカープロセス 4; ワーカーCPUアフィニティ0001 0010 0100 1000; error_log /var/logs/nginx_error.log クリティカル; pid /usr/local/webserver/nginx/nginx.pid; ワーカー_rlimit_nofile 65535;
2. イベントモジュール イベント{ epoll を使用します。 ワーカー接続 65536; }
3. HTTP サーバー http{ mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; #文字セット gb2312; }
3.1 HTTPパラメータ: クライアントヘッダーキャッシュ サーバー名ハッシュバケットサイズ 128; クライアント_ヘッダー_バッファ_サイズ 32k; ラージクライアントヘッダーバッファ 4 128k; クライアントの最大ボディサイズは10mです。 クライアントボディバッファサイズ 128k; ファイル送信オン; tcp_nopush オン; tcp_nodelay オン; キープアライブタイムアウト65: client_body_timeout 60秒; 送信タイムアウト 60秒;
3.2 HTTPパラメータとFastCGIパラメータ FastCGI 関連のパラメータは、Web サイトのパフォーマンスを向上させるために設計されており、リソースの使用量を削減し、アクセス速度を向上させます。以下のパラメータは文字通りに理解できます。 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_cache テスト; fastcgi_cache_path /usr/local/nginx/fastcgi_cache レベル=1:2 キー_ゾーン=TEST:10m 非アクティブ=5m; fastcgi_cache_valid 200 302 1時間; fastcgi_cache_valid 301 1d; fastcgi_cache_valid 任意の 1m;
3.3. HTTPパラメータgzipモジュール設定 gzip オン; gzip_min_length 1k; gzip_バッファ 4 16k; gzip_http_バージョン1.1; gzip_comp_レベル6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary オン;
4. nginxは仮想ホストを設定します 4.1 仮想ホストの設定プロセス
http サービスではいくつかの仮想ホストがサポートされています。各仮想ホストには対応するサーバー構成項目があり、その中に仮想ホストに関連する構成が含まれています。メールサービスプロキシを提供する場合は、複数のサーバーを構築することもできます。各サーバーは、リスニング アドレスまたはポートによって区別されます。 サーバ{ listen 80 デフォルト; サーバー名_; インデックス index.html index.htm index.php; ルート /data/htdocs/www; #server_name_in_redirect オフ; 場所 ~ .*\.(php|php5)?${ #fastcgi_pass unix:/tmp/php-cgi.sock; 127.0.0.1:9000; をデフォルトとして設定します。 fastcgi_index インデックス.php; fcgi.conf をインクルードします。 } 場所 ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${ 有効期限は30日です。 } 場所 ~ .*\.(js|css)?${ 1時間で期限切れになります。 } }
4.2 サーバーモジュールの下にロケーションモジュールを書く ロケーションマッチングルールの書き方の詳細については、nginxシリーズ「負荷分散のためのnginxの使用」を参照してください。 リクエストは、上流のロードバランサーに対応するバックエンド、つまりリバースプロキシによって定義されたサーバーリストにリダイレクトされます。 proxy_redirect オフ; proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 5. その他のnginxパラメータ 5.1 アクセス制御の許可/拒否 Nginx のアクセス制御モジュールはデフォルトでインストールされており、記述も非常に簡単です。特定の IP または IP セグメントへのアクセスを許可または拒否する複数の許可ルールと拒否ルールを設定できます。いずれかのルールが満たされると、マッチングは停止します。のように: 場所 /nginx-status { stub_status オン; access_log オフ; # auth_basic "NginxStatus"; # auth_basic_user_file /usr/local/nginx-1.6/htpasswd; 192.168.10.100 を許可します。 172.29.73.0/24 を許可します。 すべてを否定する; } アクセス パスのログイン パスワードを設定するために、httpd-devel ツール htpasswd を使用することもよくあります。 # htpasswd -c htpasswd 管理者 新しいパスワード: 新しいパスワードを再入力してください: ユーザー管理者のパスワードの追加 # htpasswd htpasswd admin //管理者パスワードを変更する # htpasswd htpasswd sean //別の認証ユーザーを追加する これにより、デフォルトで CRYPT を使用して暗号化されたパスワード ファイルが生成されます。上記の nginx-status の 2 行のコメントを開き、nginx を再起動して有効にします。 5.2 リストディレクトリの自動インデックス デフォルトでは、Nginx はディレクトリ全体のリスト表示を許可しません。この機能を使用するには、nginx.conf ファイルを開き、location、server、または http セクションに次のパラメータを追加します。 場所 /画像 { ルート /var/www/nginx-default/images; 自動インデックスオン; autoindex_exact_size をオフ; autoindex_localtime をオン; }
VI. 付録: 一般的な設定ファイル ユーザー www www; ワーカープロセス 2; error_log ログ/error.log; #error_log ログ/error.log 通知; #error_log ログ/error.log 情報; pid ログ/nginx.pid; イベント { epoll を使用します。 ワーカー接続数 2048; } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log ログ/access.log メイン; ファイル送信オン; # tcp_nopush オン; キープアライブタイムアウト65; # gzip 圧縮機能を gzip オンに設定します。 gzip_min_length 1k; gzip_バッファ 4 16k; gzip_http_バージョン1.1; gzip_comp_レベル6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary オン; # http_proxy は client_max_body_size を 10m に設定します。 クライアントボディバッファサイズ 128k; プロキシ接続タイムアウト 75; プロキシ送信タイムアウト 75; プロキシ読み取りタイムアウト 75; プロキシバッファサイズ 4k; プロキシバッファ 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /usr/local/nginx/proxy_temp 1 2; # 負荷分散バックエンドサーバーリストを設定するアップストリームバックエンド{ #ip_ハッシュ; サーバー 192.168.10.100:8080 max_fails=2 fail_timeout=30s ; サーバー 192.168.10.101:8080 max_fails=2 fail_timeout=30s ; } # 非常に重要な仮想ホスト構成。複数の仮想マシンがこの部分をコピーして変更できる。サーバー{ 聞く 80; サーバー名 test.example.com; ルート /apps/oaapp; 文字セット utf-8; access_log ログ/host.access.log メイン; #すべて / 負荷分散 + リバースプロキシの場所 / { ルート /apps/oaapp; インデックス index.php index.html index.htm; proxy_pass http://backend; proxy_redirect オフ; # バックエンドWebサーバーはX-Forwarded-Forを通じてユーザーの実際のIPを取得できる proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream エラー タイムアウト invalid_header http_500 http_502 http_503 http_504; } #静的ファイル、nginx はバックエンドにアクセスしてバックエンドサービスの場所を要求せずに、それらを自身で処理します ~* /download/ { ルート /data/app/nginx/downloads; } 場所 ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { ルート /data/app/nginx/images; 有効期限は7日です。 } 場所 /nginx_status { stub_status オン; access_log オフ; 192.168.10.0/24 を許可します。 すべてを否定する; } 場所 ~ ^/(WEB-INF)/ { すべてを否定する; } #エラーページ 404 /404.html; # サーバーのエラーページを静的ページ /50x.html にリダイレクトします # エラーページ 500 502 503 504 /50x.html; 場所 = /50x.html { ルートhtml; } } } VI. 付録: gzip 圧縮が有効になっているかどうかを確認する方法
接続:キープアライブ コンテンツエンコーディング:gzip コンテンツタイプ:text/html 日付: 2017 年 3 月 29 日水曜日 10:55:54 GMT ETag:W/"58db92af-331a6" 最終更新日: 2017年3月29日水曜日 10:55:43 GMT サーバー:nginx/1.10.3 転送エンコーディング: チャンク 変化:Accept-Encoding 参照ドキュメント 完全な構成例 nginx 設定ファイルの詳細な解釈に関するこの記事はこれで終わりです。より関連性の高い nginx 設定ファイルの内容については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
背景:インターフェイスを提供する Flask プロジェクトがあり、これは Docker コンテナを使...
以下に、トレーニング機関からのヒントと私自身の要約をいくつか示します。以下のインデックスの内容を説明...
前回の記事では、MySQL 最適化の概要 - クエリの合計数を紹介しました。この記事では、クエリ ス...
1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...
この記事では、参考までに、スネークゲームを実装するためのWeChatアプレットの具体的なコードを紹介...
TS で時間を過ごした場所をいくつか記録します。 (まず、文句を言わせてください。stackover...
結果:実装コードhtml <nav class="dropdownmenu"...
MySQL x64 はインストーラーを提供していません、インストーラーを提供していません、インストー...
1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...
その機能はグローバル スタイルを設定することです。その後の相対パスはこれに基づきます: <im...
まず、VMware 14のアクティベーションコードをお渡ししますFF31K-AHZD1-H8ETZ-...
私はずっとDockerにはIPアドレスがないと思っていました。実はDockerのネットワークテンプレ...
MySQLの左結合が無効であり、その使用方法今日SQLを書いていたとき、左結合を使用すると左のテーブ...
目次1 Apacheの役割2 Apacheのインストール3. Apacheを有効にする4 Apach...
この記事の例では、ストップウォッチタイマーを実装するためのJSの具体的なコードを参考までに共有してい...