ホームページ 運用・保守 Linuxの運用と保守 詳細な Nginx 構成に関する記事

詳細な Nginx 構成に関する記事

Mar 09, 2019 am 10:37 AM
nginx

一般的に使用される構成項目

職場では、主に構成ファイルを通じて Nginx を扱います。次に、これらの構成要素のそれぞれの機能を理解する必要があります。 (関連する推奨事項: Linux チュートリアル )

まず第一に、nginx.conf の内容は通常次のようになります:

...              
...            #核心摸块
events {        #事件模块
   ...
}
http {     # http 模块
    server {      # server块
        location [PATTERN] {  # location块
            ...
        }
        location [PATTERN] {
            ...
        }
    }
    server {
      ...
    }
}
mail {     # mail 模块
     server {    # server块
          ...
    }
}
ログイン後にコピー

見てみましょう。モジュールには通常どのような構成項目がありますか?

コア モジュール

user admin; #配置用户或者组
worker_processes 4; #允许生成的进程数,默认为1 
pid /nginx/pid/nginx.pid; #指定 nginx 进程运行文件存放地址 
error_log log/error.log debug; #错误日志路径,级别
ログイン後にコピー

イベント モジュール

events { 
    accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on 
    multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off 
    use epoll; #事件驱动模型select|poll|kqueue|epoll|resig
    worker_connections 1024; #最大连接数,默认为512
}
ログイン後にコピー

#http モジュール
#

http {
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    access_log off; #取消服务日志    
    sendfile on;   #允许 sendfile 方式传输文件,默认为off,可以在http块,server块,location块
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块
    server 
    {
            keepalive_requests 120; #单连接请求上限次数
            listen 80; #监听端口
            server_name  127.0.0.1;   #监听地址      
            index index.html index.htm index.php;
            root your_path;  #根目录
            location ~ \.php$
            {
                  fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
                  #fastcgi_pass 127.0.0.1:9000;
                  fastcgi_index index.php;
                  include fastcgi_params;
            }
    }
}
ログイン後にコピー

#構成項目分析 ##worker_processes

worker_processes は、Nginx サービスのプロセス数を設定するために使用されます。この値は、推奨される CPU コア数です。

worker_cpu_affinity*

worker\_cpu\_affinity は、CPU の作業コアを各プロセスに割り当てるために使用されます。パラメータには複数のバイナリ値があり、各グループは1 つのプロセス。各グループの各ビットはプロセスの CPU 使用率を表し、1 は使用を表し、0 は未使用を表します。したがって、worker\_cpu\_affinity0001001001001000; を使用して、プロセスを異なるコアにバインドします。デフォルトでは、ワーカー プロセスはどの CPU にもバインドされません。

worker_rlimit_nofile

プロセスごとに開くファイルの最大数を設定します。設定されていない場合、上限はシステムの ulimit-n 番号で、通常は 65535 です。

worker_connections

プロセスに理論的に許可される接続の最大数を設定します理論的には、大きいほど良いですが、worker_rlimit_nofile の値を超えることはできません。

use epoll

epoll を使用するようにイベント駆動モデルを設定します。 epoll は、Nginx でサポートされている高性能イベント駆動型ライブラリの 1 つです。非常に優れたイベントドリブンモデルとして評価されています。

accept_mutex off

ネットワーク接続のシリアル化をオフにします。オンに設定すると、複数のプロセスによる接続の競合を防ぐために、複数の Nginx プロセスがシリアル化されて接続を受け入れます。サーバー接続が少ない場合、このパラメータをオンにすると負荷がある程度軽減されます。ただし、サーバーのスループットが非常に高い場合は、効率を高めるためにこのパラメータをオフにしてください。また、このパラメータをオフにすると、リクエストが複数のワーカー間でより均等に分散されるようになります。そこで、accept_mutex をオフに設定します。

multi_accept on

複数のネットワーク接続を同時に受け入れるプロセスを設定します。

Sendfile on

Sendfile は、Linux 2.0 以降に導入されたシステム コールで、ネットワーク送信プロセスの手順を簡素化し、サーバーのパフォーマンスを向上させることができます。 sendfile を使用しない従来のネットワーク送信プロセス:

硬盘 >> kernel buffer >> user buffer >> kernel socket buffer >> 协议栈
ログイン後にコピー

ネットワーク送信プロセスに sendfile() を使用する:

硬盘 >> kernel buffer (快速拷贝到 kernelsocket buffer) >>协议栈
ログイン後にコピー

tcp_nopush on;

データパケットを蓄積してまとめて送信するように設定すると、送信効率が向上します。 tcp_nopush は sendfile とともに使用する必要があります。

tcp_nolay on;

小さなデータ パケットは待機せずに直接送信されます。デフォルトはオンです。 tcp_nopush とは逆の機能のように見えますが、両方がオンの場合、nginx はこれら 2 つの機能をバランスよく使用することもできます。

keepalive_timeout

HTTP 接続の継続時間。設定が長すぎると、無駄なスレッドが多くなります。サーバーのアクセス数や処理速度、ネットワークの状況などを考慮して考慮されます。

send_timeout

Nginx サーバーがクライアントに応答するまでのタイムアウトを設定します。このタイムアウトは、2 つのクライアントとサーバーの後の特定のアクティビティの間の時間のみです。接続を確立します。この時間が経過してもクライアントにアクティビティがない場合、Nginx サーバーは接続を閉じます。

gzip on

gzip を有効にすると、応答データをオンラインでリアルタイムで圧縮し、データ送信量を削減できます。

gzip_disable "msie6"

Nginx サーバーは、この種のクライアント リクエストに応答するときに、アプリケーション データをキャッシュするために Gzip 関数を使用しません。gzip_disable "msie6" は次の場合に適しています。 IE6 ブラウザ データは GZIP 圧縮されていません。 一般的に使用される構成項目は大まかに次のとおりです。さまざまなビジネス シナリオでは、追加の構成項目が必要になる場合もありますが、ここでは説明しません。

その他

http 設定には location 項目があり、リクエスト内の URI に基づいて対応する処理を照合するために使用されます。 。 ルール。

ロケーション検索ルール

location  = / {
  # 精确匹配 / ,主机名后面不能带任何字符串
  [ config A ]
}
location  / {
  # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
  # 但是正则和最长字符串会优先匹配
  [ config B ]
}
location /documents/ {
  # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ config C ]
}
location ~ /documents/Abc {
  # 匹配任何以 /documents/Abc 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ config CC ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条
  [ config D ]
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配所有以 gif,jpg或jpeg 结尾的请求
  # 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
  [ config E ]
}
location /images/ {
  # 字符匹配到 /images/,继续往下,会发现 ^~ 存在
  [ config F ]
}
location /images/abc {
  # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
  # F与G的放置顺序是没有关系的
  [ config G ]
}
location ~ /images/abc/ {
  # 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
    [ config H ]
}
ログイン後にコピー

通常の検索優先順位は高から低まで次のとおりです。

「 = 」は意味を意味します。たとえば、A では、ルート ディレクトリの末尾にあるリクエストのみが一致し、その後に文字列を含めることはできません。 「 ^~ 」の始まりは、uri が通常の文字列で始まり、通常の一致ではないことを示します。

「 ~ 」の先頭は、大文字と小文字を区別する正規の一致を示します。

「 ~* 」の先頭は、大文字と小文字を区別しない正規の一致を示します。

"/" ユニバーサル一致。他に一致するものがない場合、すべてのリクエストが一致します。

#負荷分散構成

Nginx 的负载均衡需要用到 upstream 模块,可通过以下配置来实现:

upstream test-upstream {
    ip_hash; # 使用 ip_hash 算法分配
    server 192.168.1.1; # 要分配的 ip
    server 192.168.1.2;
}
server {
    location / {       
        proxy_pass http://test-upstream;
    }
}
ログイン後にコピー

上面的例子定义了一个 test-upstream 的负载均衡配置,通过 proxy_pass 反向代理指令将请求转发给该模块进行分配处理。

以上が詳細な Nginx 構成に関する記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

Nginxが起動されているかどうかを確認する方法は? Nginxが起動されているかどうかを確認する方法は? Apr 14, 2025 pm 12:48 PM

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Linuxでnginxを開始する方法 Linuxでnginxを開始する方法 Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Dockerでミラーを作成する方法 Dockerでミラーを作成する方法 Apr 15, 2025 am 11:27 AM

Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

nginx403を解く方法 nginx403を解く方法 Apr 14, 2025 am 10:33 AM

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

See all articles