Nginx配置詳解 三

2021-10-10 03:22:33 字數 4235 閱讀 9245

三. rewrite指令

四. nginx配置詳解

五. nginx內建繫結變數

nginx是乙個高效能的http和反向**web伺服器,同時也提供了imap/pop3/smtp服務。目前大部分使用者用它來作反向**、負載均衡。

nginx的優點:

高併發效能強,官方nginx處理靜態檔案併發量為5w/s

反向**能力強(可用於負載均衡)

記憶體和cpu佔用率底

對後端服務有健康檢查功能

配置簡單且容易上手

location [

=|~|~*|^~] patt

匹配符

含義location = /url

精確匹配,只有完全匹配上才能生效

location ^~ /url

非正則字首匹配

location ~ /url

區分大小寫正則匹配

location ~* /url

不區分大小寫正則匹配

location /url

一般匹配(字首匹配)

location /

通用匹配,任何未匹配到其他location的請求都會被匹配到,相當於switch中的default

(location =

/url)

>

(location ^

~/url)

>

(location ~|~

*/url)

>

(location /url)

>

(location /

)

匹配優先順序介紹:

1)優先進行精準匹配,未成功,進行第2步

2)進行非正則字首匹配,未成功,進行第3步

3)進行正則匹配,未成功,進行第4步

4)進行一般匹配,(若匹配上多個location,返回匹配路徑最長的location),未成功,進行第5步

5)進行通用匹配,未成功,返回404錯誤。

後續更新

配置檔案 nginx.conf:

#定義nginx執行的使用者和使用者組

user www www;

#啟動程序,通常設定成和cpu的數量相等

worker_processes 8;

#為每個程序分配cpu,上例中將8個程序分配到8個cpu,當然可以寫多個,或者將乙個程序分配到多個cpu。

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

#這個指令是指當乙個nginx程序開啟的最多檔案描述符數目,理論值應該是最多打

#開檔案數(ulimit -n)與nginx程序數相除,但是nginx分配請求並不是那麼均勻

#,所以最好與ulimit -n的值保持一致。

worker_rlimit_nofile 102400;

#全域性錯誤日誌

#錯誤日誌定義等級,[ debug | info | notice | warn | error | crit ]

error_log /usr/local/nginx/logs/error.log;

#pid檔案

pid /usr/local/nginx/nginx.pid;

#工作模式及連線數上限

events

#設定http伺服器,利用它的反向**功能提供負載均衡支援

http

配置檔案 vhosts.conf:

#這裡為後端伺服器wugk應用集群配置,根據後端實際情況修改即可,tdt_wugk為負載均衡名稱,可以任意指定

#但必須跟vhosts.conf虛擬主機的pass段一致,否則不能**後端的請求。weight配置權重,在fail_timeout內檢查max_fails次數,失敗則剔除均衡。

upstream tdt_wugk

#虛擬主機配置

server

# 定義錯誤提示頁面

error_page 500 502 503 504 /50x.html;

location = /50x.html

#配置nginx動靜分離,定義的靜態頁面直接從nginx發布目錄讀取。

#php指令碼請求全部**到 fastcgi處理. 使用fastcgi預設配置.

location ~ \.php$

#設定檢視nginx狀態的位址

location /nginxstatus

}}

名稱

說明$arg_name

請求中的name引數

$args

請求中的引數

$binary_remote_addr

遠端位址的二進位制表示

$body_bytes_sent

已傳送的訊息體位元組數

請求資訊裡的」content-length

$content_type

請求資訊裡的」content-type

$document_root

針對當前請求的根路徑設定值

$document_uri

與$uri相同; 比如 /test2/test.php

$host

遠請求資訊中的」host」,如果請求中沒有host行,則等於設定的伺服器名

$hostname

機器名使用 gethostname系統呼叫的值

cookie 資訊

引用位址

客戶端**資訊

最後乙個訪問伺服器的ip位址。

相當於網路訪問路徑

$is_args

如果請求行帶有引數,返回「?」,否則返回空字串

$limit_rate

對連線速率的限制

$nginx_version

當前執行的nginx版本號

$pid worker

程序的pid

$query_string

與$args相同

$realpath_root

按root指令或alias指令算出的當前請求的絕對路徑。其中的符號鏈結都會解析成真是檔案路徑,使用 nginx 內建繫結變數

$remote_addr

客戶端ip位址

$remote_port

客戶端埠號

$remote_user

客戶端使用者名稱,認證用

$request

使用者請求

$request_body

這個變數(0.7.58+) 包含請求的主要資訊。在使用proxy_pass或fastcgi_pass指令的location中比較有意義

$request_body_file

客戶端請求主體資訊的臨時檔名

$request_completion

客如果請求成功,設為」ok」;如果請求未完成或者不是一系列請求中最後一部分則設為空

$request_filename

當前請求的檔案路徑名,比如/opt/nginx/www/test.php

$request_method

請求的方法,比如」get」、」post」等

$request_uri

請求的uri,帶引數

$scheme

所用的協議,比如http或者是https

$server_addr

伺服器位址,如果沒有用listen指明伺服器位址,使用這個變數將發起一次系統呼叫以取得位址(造成資源浪費)

$server_name

請求到達的伺服器名

$server_port

請求到達的伺服器端口號

$server_protocol

請求的協議版本,」http/1.0」或」http/1.1」

$uri

請求的uri,可能和最初的值有不同,比如經過重定向之類的

Nginx配置詳解

nginx的主要配置檔案是nginx.conf,位於安裝目錄下的nginx conf資料夾裡,主要的配置引數如下 定義nginx執行的使用者和使用者組 user nobody nobody nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,...

nginx配置詳解

定義nginx執行的使用者和使用者組 user www www nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,debug info notice warn error crit error log var log nginx error...

NGINX配置詳解

nginx 配置檔案 user nginx 使用者worker processes 8 工作程序,根據硬體調整,大於等於cpu核數 error log logs nginx error.log crit 錯誤日誌 pid logs nginx.pid pid放置的位置 worker rlimit n...