1. 程式人生 > 其它 >nginx優化之nginx的配置檔案詳解

nginx優化之nginx的配置檔案詳解

目錄

前言

預設的nginx伺服器配置檔案都存放在安裝目錄conf中,主配置檔名為nginx.conf,下面我們來看看nginx的配置檔案內容和一些基本的配置方法。

一個完整nginx配置檔案展示

worker_processes 1;                                 #全域性生效

events {
  worker_connections 1024;                          #在events部分中生效
}

http {
  include mime.types       ;                               #以下指令在http部分中生效
  default_type application/octet-stream;
  sendfile on;
  keepalive_timeout 65;
  server {                                          #以下指令在http的server部分中生效
    listen 80;
    server_name localhost;
    location / {                                    #以下指令在http/server的location中生效
      root html;
      index index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location - /50x.html {
      root html;
    }

    location ~ \.php$ {
        root html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
  }
}

注意:在nginx配置中,還包括註釋內容,註釋標誌位“#”。

nginx檔案配置的結構

初始的nginx伺服器主配置是比較長的,不過結構和內容還是比較清晰的,以下我們分為幾個小節進行分析介紹。通過上面的配置檔案內容分,我們可以總結出以下nginx.conf的基本結構:

...                            #全域性快

events                         #events塊
{
  ...
}

http                           #http塊
{
  ...                          #http全域性塊

  server                       #server塊
  {
    ...                        #server全域性塊

    location [PATTERN]         #location塊
    {
      ...
    }

    location [PATTERN]         #location塊
    {
      ...
    }
  }

  server                       #server塊
  {
    ...
  }

  ...                          #http塊
}

通過上圖,我們可以看出,nginx主要有三塊組成,分別是全域性塊,events塊和http塊;在http塊中,又包含http全域性塊,多個server塊;每個server塊中,可以包含server全域性塊和多個location塊.

在同一塊配置中巢狀的配置塊,各個之間不存在次序關係.

nginx詳細配置資訊

以下是一個nginx的完整配置檔案,本節我們將以下面的配置檔案為主解析nginx各個模組的引數已經配置,在完成解析後測試nginx服務。

####################  全域性塊 開始 ####################

#配置允許執行nginx伺服器的使用者和使用者組
user root root;

#配置允許nginx程序生成的worker processes數
worker processes 3;

#配置允許nginx伺服器執行對錯誤日誌存放路徑
error_log logs/error.log;

#配置nginx伺服器執行時的pid檔案存放路徑和名稱
pid nginx.pid;

####################  全域性塊 結束 ####################

####################  server塊 開始 ####################

events
{
  #配置事件驅動模型
  use epoll;

  #配置最大連線數
  worker_connections 1024;
}

####################  server塊 結束 ####################

####################  http塊 開始 ####################
http
{
  # 定義MIME-Type
  include mime.types;
  default_type application/octet-stream;

  #配置允許使用sendfile方式傳輸
  sendfile on;

  #配置連線超時時間
  keepalive_timeout 65;

  #配置請求處理日誌的格式
  log_format access.log;
  '$remote_addr - [$time_local]-"$request"-"$http_user_agent"';

  ####################  server塊 開始 ####################
  #配置虛擬主機myServer1
  server {
    #配置監聽埠和主機名稱(基於名稱)
    listen 8081;
    server_name myServer1;

    #配置請求處理日誌存放路徑
    access_log /myweb/server1/log/access.log;

    #配置錯誤頁面
    error_page 404 /404.html;

    #配置處理/server1/location1請求的location
    location /server/location1 {
      root /myweb;
      index index.svrl-locl.htm;
    }

    #配置處理/server1/location2請求的location
    location /server1/location2 {
      root /myweb;
      index index.svrl-loc2.htm;
    }
  }

  #配置虛擬主機myServer2
  server {
    listen 8082;
    server_name 192.168.1.3;
    access_log /myweb/server1/log/access.log;

    #對錯誤頁面404.html做了定向配置
    error_page 404 /404.html;

    location /server2/location1 {
      root /myweb;
      index index.svr2-locl.htm;W
    }

    location /svr2/loc2 {
      #對location的URL進行更改
      alias /myweb/server2/location2/;
      index index.svr2-loc2.htm;
    }

    #配置錯誤頁面轉向
    location = /404.html {
      root /myweb/;
      index 404.html;
    }
  }
  ####################  server塊 結束 ####################
}
####################  http塊 結束 ####################