Nginx配置詳解


本文介紹Nginx的配置文件信息,以及如何在虛擬站點中使用PHP。

 

一、Nginx主配置文件及解析

Nginx配置文件主要分為4部分:

         main(全局設置)部分設置的指令將影響其他所有設置;

         server(主機設置)部分的指令主要用於指定主機和端口;

         upstream(負載均衡服務器設置)部分指令主要用於負載均衡,設置一系列的后端服務器;

         location(URL匹配特定位置的設置)部分用於匹配網頁位置。

 四者之間的關系:server繼承main,location繼承server,upstream既不會繼承其他設置,也不會被繼承。

 

      

  1.  # 指定Nginx Worker進程運行用戶以及用戶組,默認由nobody賬號運行。如果編譯Nginx的時候指定了用戶和用戶組,該選項可以關閉
  2.  user  nobody;
  3.  # 指定Nginx需要開啟的進程數,每個進程平均耗費10~12M內存。建議數量設置成與CPU內核的數量一致就可以了。
  4.  # cpu的核心數可以使用 cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l 或 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 命令進行查
  5.  worker_processes  1;
  6.  # 定義全局錯誤日志文件,后面可以設置輸出級別:debug、info、notice、warn、error、crit
  7.  error_log  logs/error.log;
  8.  #error_log  logs/error.log  notice;
  9.  #error_log  logs/error.log  info;
  10.  # 用來指定進程id的存儲文件位置
  11.  pid        logs/nginx.pid;
  12.  # 啟用TCMalloc的設置,見上節相關的描述
  13.  google_perftools_profiles /tmp/tcmalloc;
  14.  # 用於綁定worker進程和CPU,該值必須和Linux內核打開文件數關聯起來,如將該值設置為65535就必須在Linux命令行中執行 ulimit -HSn 65535
  15.  worker_rlimit_nofile 65535;
  16.  
  17.  events {
  18.      # 用來指定Nginx的工作模式,支持的模式有select、poll、kqueue、epool、rtsig和/dev/poll。其中select和poll都是標准的工作模式
  19.      # kqueue和epoll是高效的工作模式,前者用在linux平台上,后者用於BSD系統。
  20.      use epoll;
  21.      # 定義每個進程的最大連接數,默認是1024,該參數的最大連接數受Linux系統進程的最大打開文件數限制,必須使用 ulimit命令
  22.      # 另外,最大客戶端連接數max_client=worker_processes*worker_connections,作為反向代理的話還需要除以4。
  23.      worker_connections  65535;
  24.  }
  25.  
  26.  http {
  27.      # 引用外部文件,類似於Apache中的include
  28.      include       mime.types;
  29.      # 當出現無法解析的文件時,提示用戶下載
  30.      default_type  application/octet-stream;
  31.  
  32.      # 定義日志的格式,后面的main為格式的名稱,可以在access_log指令中進行引用
  33.      #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  34.      #                  '$status $body_bytes_sent "$http_referer" '
  35.      #                  '"$http_user_agent" "$http_x_forwarded_for"';
  36.  
  37.      #access_log  logs/access.log  main;
  38.  
  39.      # 設定請求緩沖
  40.      server_names_hash_bucket_size 128;
  41.      client_header_buffer_size 32k;
  42.      large_client_header_buffers 432k;
  43.      # 設置客戶端能夠上傳文件大小的限制
  44.      client_max_body_size 600m;
  45.  
  46.      # 是否開啟高效文件傳輸模式,將tcp_nopush和tcp_nodelay兩個指令設置為on用於防止網絡阻塞
  47.      sendfile        on;
  48.      tcp_nopush     on;
  49.      tcp_nodelay  on;
  50.  
  51.      # 隱藏nginx的版本顯示,增強安全性
  52.      server_tokens off;
  53.  
  54.      # 用於設置客戶端連接保持活動的超時時間,單位為秒,默認為75s
  55.      #keepalive_timeout  0;
  56.      keepalive_timeout  65;
  57.      # 用於指定響應客戶端的超時時間,這個超時僅限於兩個連接活動之間的時間,默認為60s
  58.      #send_timeout 60;
  59.  
  60.      # 下面是FastCGI的優化指令
  61.      # 連接到后端FastCGI的超時時間
  62.      fastcgi_connect_timeout 300;
  63.      # 向FastCGI傳送請求的超時時間
  64.      fastcgi_send_timeout 300;
  65.      # 接收FastCGI應答的超時時間
  66.      fastcgi_read_timeout 300;
  67.      # 指定讀取FastCGI應答第一部分需要多大的緩沖區
  68.      fastcgi_buffer_size 64k;
  69.      fastcgi_buffers 464k;
  70.      # 默認值是fastcgi_buffers的兩倍
  71.      fastcgi_busy_buffers_size 128k;
  72.      # 表示在寫入緩存文件時使用多大的數據塊,默認為fastcgi_buffers的兩倍
  73.      fastcgi_temp_file_write_size 128k;
  74.      # 為FastCGI緩存指定一個文件路徑、目錄結構等級、關鍵字區域存儲時間和非活動刪除時間
  75.      #fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
  76.      # 開啟FastCGI緩存並為其設定一個名稱。開啟緩存可以有效降低CPU的負載,並且防止502錯誤的發生。
  77.      # 但是同時也會引起很多問題,要視具體情況而定
  78.      #fastcgi_cache TEST;
  79.      # 用來指定應答代碼的緩存時間,下面三條指令表示將200和303應答緩存1小時,301應答緩存1天,其他應答緩存1分鍾。
  80.      #fastcgi_cache_valid 200 302 1h;
  81.      #fastcgi_cache_valid 301 1d;
  82.      #fastcgi_cache_valid any 1m;
  83.  
  84.      # 配置Nginx的HttpGzip模塊,開通的前提是安裝的時候啟用了該模塊,使用 /usr/local/nginx/sbin/nginx -V 來查看安裝的信息(大寫的V)
  85.      # 是否開通gzip
  86.      gzip  on;
  87.      # 允許壓縮的頁面最小字節數
  88.      gzip_min_length 1k;
  89.      gzip_buffers 416k;
  90.      gzip_http_version 1.1;
  91.      # 壓縮比,從1到9,越大壓縮率越高但越占資源,默認為1
  92.      gzip_comp_level 2;
  93.      # 指定壓縮的類型,text/html總是被壓縮
  94.      gzip_types text/plainapplication/x-javascripttext/cssapplication/xml;
  95.      # 是否讓瀏覽器緩存壓縮過的數據,默認為off
  96.      gzip_vary on;
  97.  
  98.      # server 用於對虛擬主機的設置,建議每個站點的設置放到外部配置文件中,然后使用include進行引用
  99.      # 這里設置一個默認的主機,當默認訪問的時候返回403錯誤
  100.      server {
  101.          listen       80 default;
  102.          server_name _;
  103.          # 也可以修改成404或者500,根據自身情況進行設置
  104.          return 403;
  105.      }
  106.  
  107.      # 可以使用include將每個站點的配置引用進來,這樣方便對站點進行管理
  108.      include vhosts/examples.com.conf;
  109.      include vhosts/abc.com.conf;
  110.  }

 

 

 

 

二、Nginx設置虛擬主機及對PHP的支持
在conf目錄下面創建vhosts目錄,並創建站點的配置文件,這里以examples.com.conf為例。

  1. [root@localhost ~]# cd /usr/local/nginx/
  2. [root@localhost nginx]# mkdir -p conf/vhosts
  3. [root@localhost nginx]# vim conf/vhosts/examples.com.conf

創建的examples.com.conf配置文件如下:

  1.  # 虛擬主機以server進行定義
  2.  server {
  3.      # 監聽的端口,多個端口之間使用空格進行間隔
  4.      listen       80;
  5.      # 用來定義訪問的ip地址或者域名,多個域名之間使用空格分開
  6.      server_name  examples.com www.examples.com;
  7.      # 用於指定站點網頁的默認編碼格式
  8.      charset utf-8;
  9.  
  10.      # 用來指定此站點的訪問日志存放路徑,后面的main用於設定日志的格式
  11.      #access_log  logs/examples.com.access.log  main;
  12.  
  13.      # 用於指定站點的網頁根目錄,可以是相對路徑(相對於nginx安裝目錄),也可以是絕對路徑
  14.      #root /www/examples.com
  15.      # 用於指定訪問的默認首頁地址
  16.      #index index.html index.php
  17.  
  18.      # 用來指定站點默認訪問的設置,里面的root和index用法和效果與上面是一樣的
  19.      # 兩種方式使用任何一種都是可以的,這里采用 location / {} 的方式
  20.      location / {
  21.          root   /www/examples.com;
  22.          index  index.html index.php;
  23.      }
  24.  
  25.      # 使用error_page指令設置各種錯誤信息的返回頁面
  26.      # 錯誤信息的返回頁面大小如果低於512k則會被ie瀏覽器替換為ie默認的錯誤頁面
  27.      #error_page  404              /404.html;
  28.      error_page   500 502503504 /50x.html;
  29.      location = /50x.html {
  30.          root   html;
  31.      }
  32.  
  33.      # nginx的location指令用於設置url地址匹配,支持正則表達式匹配,也支持條件判斷匹配。
  34.      # 可以通過location指令實現nginx對動態、靜態網頁的過濾處理。
  35.      # 下面是對所有的圖片設置緩存30天
  36.      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
  37.          expires 30d;
  38.      }
  39.      # 對js和css文件緩存1小時
  40.      location ~ .*\.(js|css)$ {
  41.          expires 1h;
  42.      }
  43.  
  44.      # 下面是列出了兩種解析php的方式:
  45.      # 第一種是簡單的將所有以php結尾的請求都交給本機的8080端口進行處理
  46.      #location ~ \.php$ {
  47.      #    proxy_pass   http://127.0.0.1:8080;
  48.      #}
  49.      # 第二種是將php的請求交給FastCGI進程監聽的ip地址及端口,這里轉發給PHP_FPM
  50.      location ~ \.php$ {
  51.          # 設定用於解析php的根目錄,通常為網站根目錄
  52.          root          /www/examples.com;
  53.          # 地址和端口與php_fpm中設置的一致
  54.          fastcgi_pass   127.0.0.1:9000;
  55.          # 默認首頁
  56.          fastcgi_index  index.php;
  57.          # 指定防止php動態程序的主目錄,也就是$fastcgi_script_name前面指定的路徑,建議與網站根目錄一致或直接使用$document_root
  58.          fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
  59.          include        fastcgi_params;
  60.      }
  61.  
  62.      # 防止直接訪問 .htaccess 文件,建議開啟
  63.      location ~ /\.ht {
  64.          deny  all;
  65.      }
  66.  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM