從頭開始學nginx配置

1、nginx是什麼

  • Nginx 是一個「高性能的HTTP和反向代理服務器」,也是一款「輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器」

2、 nginx的下載與安裝

  • windows直接在官網 nginx
  • mac用戶自行選擇,最好是搭建brew,而後使用brew進行下載,下載連接參考

3、 nginx的配置介紹

  • 同一個指令放在不一樣層級的塊中,其做用域也不一樣。
  • 若是某個指令在兩個不一樣的層級塊中同時出現,就採用「就近原則」,即以較低層級塊中的配置爲準。 好比,某指令同時出如今http全局塊中和server塊中,而且配置不一樣,則以server塊中的配置爲準。
  • 在Nginx配置文件中,每一條指令配置都必須以分號結束。
  • user 指令用於指定nginx服務器的用戶(組),全部用戶均可以使用,能夠用user nobody nobody;
  • worker_processes 全局塊,是實現併發處理服務的關鍵所在。worker_processes number | auto; auto就是自動檢測
  • pid 配置nginx進程的pid存放路徑 pid logs/nginx.pid;
  • error_log 存放錯誤日誌的路徑 error_log file | studerr [debug | info | notice | warn | error | crit | alert | emerg];
  • include 引入配置文件 include vhost/page.yy.com.conf;
  • accept_mutex 設置網絡鏈接的序列化 accept_mutex on | off; 開啓時,就對多個nginx 進程接收鏈接進行序列化,防止多個進程對鏈接的爭搶。在events塊中設置,默認爲on
  • multi_accept on | off; 是否容許同時接收多個網絡鏈接 multi_accept on;events塊中設置,默認爲off
  • use method(select、poll、kqueue、epoll、rtsig、/dev/poll、eventport)。在events塊中設置
  • worker_connections 配置最大鏈接數,默認爲512, worker_connection 1024;
  • default_type 用於配置處理前端請求的MIME類型。 defauly_type mime-type;默認爲text/plain
  • access_log path[format[buffer=size]] 對服務日誌的格式、大小、輸出等進行配置.默認為access_log logs/access.log combined;
  • log_format name string ...; 用於定義服務日誌的格式。 好比log_format main $remote_addr...;
  • sendfile on | off; 配置容許 sendfile 方式傳輸文件
  • sendfile_max_chunk 128k; 配置傳輸的文件的最大尺寸
  • keepalive_timeout timeout[header_timeout] 配置鏈接超時時間,好比keeplive_timeout 120s 100s;在服務器端與客戶端保持鏈接的時間設置爲120s,發給用戶端的應答報文頭部中Keep-Alive域的超時時間爲100s.
  • keepalive_requests number; 限制用戶經過某一連接向Nginx服務器發送請求的次數。默認100
  • listen address/port/unix; 配置監聽IP地址,端口,unix服務。
  • server_name name ...; 基於名稱的虛擬主機配置,。能夠經過正則表達式進行匹配。匹配的時候遵循必定的規則
  • server_name 192.168.1.3; 配置基於IP的虛擬主機
  • root path 配置請求的根目錄
location /data/ {
    root /locationtestl;
}
複製代碼
  • alias path 更改location的URI
location /xhapp/ {
    alias F:/data/temp/app_reg/;
}
複製代碼
  • index file ...; 設置網站的默認首頁
location ~ ^/data/(.+)/web/ $ {
     index  index.html index.htm;
}
複製代碼
  • error_page code ... [=[response]] uri 設置網絡錯誤頁面好比: error_page 404 /404.html
location /404.html {
    root /myserver/errorpages/
}
複製代碼
  • allow address | CIDR | all; 容許訪問Nginx的客戶端IP
  • deny address | CIDR | all; 禁止訪問Nginx的客戶端IP
  • Nginx配置在解析的過程當中,遇到deny指令或者allow指令是按照順序對當前客戶端的鏈接進行訪問
location / {
    deny 192.168.1.1;
    allow 192.168.1.0/24;   # 先執行,能夠訪問
    deny all;               # 不會訪問到
}
複製代碼
  • auth_basic string | off; 開啓或關閉某認證功能
  • auto_basic_user_file file; 設置包含用戶名和密碼信息的文件路徑
  • worker_cpu_affnity 0001 0100 1000 0010; 爲每一個進程分配CPU的內核,前提條件是 worker_processes 4; 設置爲4個服務進程數
  • send_timeout; nginx響應客戶端的超時時間,好比 send_timeout 10s; 就是服務器響應客戶端超時時間爲10s,超過10s後就關閉
  • client_header_buffer_size 設置nginx服務器容許的客戶端請求頭部的緩衝區大小 client_header_buffer_size 4k;
  • worker_rlimit_sigpending 1024; 設置linux平臺的事件信號隊列長度上限。
  • kqueue_changes number; 在kqueue事件的驅動模式下,服務器傳遞給內核的事件數量
  • kqueue_events number; 在kqueue事件的驅動模式下,服務器從內核取到的事件數量
  • devpoll_changes number; 在dev/poll事件的驅動模式下,服務器傳遞給內核的事件數量
  • devpoll_events number; 在dev/poll事件的驅動模式下,服務器從內核中取到的事件數量
  • epoll_events number; 在epoll事件驅動下,nginx與事件以前傳遞事件的數量。
  • rtsig_singo singo; rtsig使用的兩個信號的第一天,第二個是在第一個信號的編號上加1
  • rtsig_overflow_*

nginx的功能

  • gizp壓縮
  • rewrite功能
  • 代理服務
  • 緩存機制
  • 郵件服務
  • 時間管理
  • 內存管理

nginx的代理服務

  • 代理服務: 也叫正向代理服務
  • resolver address:制定dns服務器的ip地址
  • resolver_timeout time: 用於解析dns服務器域名解析超時時間
  • proxy_pass url: 用於設置代理服務器的協議和地址

nginx的源碼結構

  • src目錄下包含core event http mail misc os
  • mail 主要是郵件服務相關的
  • misc .app文件是測試程序中引用的頭文件是否與c++兼容 .c文件是用來支持Google PerfTools文件的使用
  • os 目錄,存在類unix系統
  • core
  • event
  • http
相關文章
相關標籤/搜索