nginx的安裝 管理 配置與除錯

2021-07-27 11:58:27 字數 4828 閱讀 5989

nginx優點

除錯nginx

參考裝好gcc g++ 開發庫環境

ubunto

$ apt-get install build-essential

$ apt-get install libtool

centos

$ yum -y install gcc automake autoconf libtool make

$ yum install gcc gcc-c++

設定nginx安裝目錄

/usr/local/nginx/
解壓nginx後編譯安裝

$ sudo ./configure \

--prefix=/usr/local/nginx/nginx \

--with-pcre=/usr/local/opensoft/pcre-8.39 \

--with-zlib=/usr/local/opensoft/zlib-1.2.8 \

--with-openssl=/usr/local/opensoft/openssl-1.0.1t

執行

/usr/local/nginx/sbin/nginx
檢視80埠是否執行

netstat -ano | grep 80
訪問 localhost ,顯示welcome to nginx! 完成安裝。

編譯安裝需要自行建立nginx shell

配置介紹

user www www;      #執行使用者和組

worker_processes number | auto; #worker程序數,cpu總核同數量,減少cpu排程成本。

worker_cpu_affinity 01 10; #多核繫結,位圖表示法,ps -f檢視,psr列對應cpu號

pid /usr/local/webserver/nginx/nginx.pid; #指定pid存放的路徑

worker_rlimit_nofile; #檔案描述符數量

master_process on | off; #啟動程序池機制,預設on,如果設定為off,將不會建立master程序,用乙個worker來處理。worker_processes也會失效。

daemon on | off; #是否守護程序,預設on。

#任意域可配

error_log file | level #debug | info | notice | warn | error | crit | alert | emerg 預設error,過濾前面包含後面,debug需要編譯--with-debug,debug按模組控制等級,例如debug_http。

#反向**時nginx需要訪問的上游伺服器和負載均衡策略

#加權輪詢,基礎策略,計算各個後端伺服器的當前權值,選擇得分最高的伺服器處理當前請求。

#ip雜湊,雜湊選擇失敗20以上或一台後端伺服器,採用加權。

#加權適用性強,不依賴客戶端任何資訊,能把客戶端請求合理均勻的分配,劣勢是同乙個客戶端多次請求會被分配到不同的後端伺服器處理,無法滿足會話保持。

#ip雜湊較好地把同一客戶端的多次請求分配到同一台後端伺服器,劣勢是某個ip位址請求特別多(大量使用者通過乙個nat**請求),會導致某台後端伺服器壓力非常大,其他伺服器很空閒的不均衡情況。

upstream back_end

#取$is_args的值,定義為$my_flag,預設值為0,如果是「?」,值為1

map $is_args $my_flag

#禁止使用者通過ip位址訪問伺服器,nginx未配置該網域名稱或通過伺服器ip來訪問採用。

server

#虛擬主機配置塊

server

# 例如 location /image/ 匹配 /image/001.jpg

# = : uri必須完全匹配

# ~ : 大小寫敏感匹配 location ~ \.(php)$ 大小寫敏感處理php請求

# ~* : 大小寫不敏感匹配 location ~* \.(png)$ 忽略大小寫,匹配所有的png檔案

# ^~ : 匹配前半部分即可 location ^~ /image/ 匹配/image/*.* 優先順序比上面低。

# @ : 用於內部子請求,外部無法訪問

#乙個**的location

location /passto /person")

#try_files寫法

try_files /person$uri /$uri =400;

}

location / ,返回/var/data/001.jpg

index index.php; #預設index檔案

auth_basic auth; #彈出資訊提示字元為auth

auth_basic_user_file /etc/ngx_passwd; #賬號密碼

autoindex on; #自動列出目錄,禁用index

autoindex_exact_size on; #設定索引檔案大小的單位

autoindex_localtime on; #開啟本地時間顯示檔案時間

}#增加websocket的支援

#下列檔案快取在本地瀏覽器30天

#下列檔案快取在本地瀏覽器1小時

location ~ .*\.(js|css)?$

error_page 500 502 503 504 /50x.html; #錯誤返回頁面

}}

事件驅動,nginx內部流程的向前推進基本都是靠各種事件觸發來驅動的,否則nginx將一直阻塞在函式epoll_wait()或sigsuspend()這樣的系統呼叫上。

nginx比apache更快是因為啟用了epoll模式(linux kenel 2.6+),它不會隨著被監控描述符數目的增長而導致效率急速下降。 而apache用的是select模式,採用遍歷掃瞄來判斷每個描述符是否有事件發生。監控的描述符數目越多,消耗也就越大。而且受系統預設限制,select模型最多只能同時監控1024個描述符。

首先,基於poll的epoll具有原生poll的優點,即同時監控的描述符個數不受限制(受程序可開啟檔案描述符個數限制,cat /proc/sys/fs/file-max),其次,epoll模型對事件的響應是觸發式的,無需列表掃瞄。

epoll

1、監控描述符不受限制(受程序可開啟檔案描述符個數限制)

2、i/o事件響應觸發(lt水平觸發,不做處理核心持續通知,et邊緣觸發,通知一次,更有優勢)

select

1、監控最大1024個描述符

2、i/o事件輪詢觸發

select 標準的i/o復用模型,unix系統都提供,效能較差,nginx可編譯中禁用。

poll 標準的i/o復用模型,理論上比select優,同select類似。

epoll linux 2.6+上正式提供的更為優秀的i/o復用模型

kqueue freebsd4.1+、openbsd2.9+、netbsd2.0、os x上特有的更優秀的i/o復用模型

eventport 系統solaris 10上可用的高效能i/o復用模型

/dev/poll 同上

rtsig 實時訊號模型(real time signals)

aio 非同步i/o

多路復用模型

例子:如果要監控10條高速公路堵車(是否可讀),需要10個人(10個執行緒,10處**)來做這件事,利用某種技術把10條馬路的情況統一傳達到某個中心,那麼只需要1個人在中心進行監控就行了。而select或epoll這樣的多路i/o復用機制好比攝像頭的功能,能把多個i/o埠的狀況反饋到一處,比如某個特定的檔案描述符上,這樣,應用程式只需要利用對應的select()或epoll_wait()系統呼叫阻塞關注一處即可。

遇到效能瓶頸(strace -t 跟蹤消耗時間)、啟動失敗、響應資料與預期不一致、莫名其妙的segment ation fault段錯誤。

ps aux | grep nginx
狀態為ts(s代表nginx程序為會話的首程序,session leader,t代表處在task_stopped狀態)

使用gdb | cgdb 除錯

1、編譯nginx的時候繫結gdb

2、修改nginx為乙個工作程序,關閉守護程序。

3、開始除錯gdb -q -p 4614

使用strace(系統呼叫)/pstack(內部函式)除錯

1、strace -p 4033

2、wget 127.0.0.1 函式

其他除錯

system tap/

nginx的安裝與配置

1 nginx 4 nginx的安裝 linux centos7 2 安裝相關依賴和庫檔案 yum y install gcc gcc c autoconf automake gcc gcc c 的庫檔案 yum y install pcre pcre devel 安裝nginx依賴包 yum y ...

Nginx 的安裝與配置

linux centos 7.3 64位 nginx nginx 1.13.1 安裝目錄 usr local 3 openssl 若需要支援 https 協議 yum y install openssl yum y install openssl devel 1 解壓安裝包 tar z xv f n...

nginx安裝與配置

1 安裝前,需要安裝的軟體包 yum y install gcc gcc c autoconf automake yum y install zlib zlib devel openssl openssl devel pcre pcre devel 2 安裝nginx 3 啟動與停止nginx 啟動...