這篇文章主要介紹了關於快速搭建Nginx及其基本參數的配置,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
Nginx是一個開源且高效能、可靠的HTTP中介軟體、代理服務。
httpd - Apache
IIS - 微軟
GWE - Google
tomcat - Sun
多個描述符的I/O操作都能在一個執行緒內並發交替地順序完成,這就叫I/O多路復用,這裡的「復用」指的是複用同一個執行緒。
IO多路服用的實作方式:select、poll、epoll
基本原理:
select 函數監視的檔案描述子分3類,分別是writefds、readfds、和exceptfds。呼叫後select函數會阻塞,直到有描述子就緒(有資料 可讀、可寫入、或有except),或逾時(timeout指定等待時間,如果立即傳回設為null即可),函數會傳回。當select函數回傳後,可以透過遍歷fdset,來找到就緒的描述符。
select缺點:
1.能夠監視檔案描述子的數量有最大限制。
2.線性掃描效率低。
基本原理:
epoll支援水平觸發和邊緣觸發,最大的特點在於邊緣觸發,它只告訴進程哪些fd剛剛變成就緒態,只會通知一次。還有一個特點是,epoll使用「事件」的就緒通知方式,透過epoll_ctl註冊fd,一旦該fd就緒,核心就會採用類似callback的回呼機制來啟動該fd,epoll_wait便可以收到通知。
epoll的優點:
1.沒有最大並發連線的限制,能開啟的FD的上限遠大於1024(1G的記憶體上能監聽約10萬個連接埠) 。
2.效率提升,不是輪詢的方式,不會隨著FD數目的增加效率下降。
3.記憶體拷貝,利用mmap()檔案映射記憶體加速與核心空間的訊息傳遞;即epoll使用mmap減少複製開銷。
CPU親和性(affinity)是一種把CPU核心和Nginx工作進程綁定方式,把每個worker進程固定在一個CPU上執行,減少CPU的cache miss,獲得更好的性能。
/etc/yum.repos.d/nginx.repo
文件,並輸入如下內容[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/ gpgcheck=0 enabled=1
OS
可選值有centos
和rhel
。OSRELEASE
為系統版本,例如6
和7
分別代表 6.x 和 7.x 的版本。
yum install -y nginx
安裝nginxnginx -v
查看nginx版本[root~]# nginx -v nginx version: nginx/1.14.0
nginx -V
[root~]# nginx -V nginx version: nginx/1.14.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
編譯選項 | |
---|---|
#--prefix =/etc/nginx |
設定檔目錄 |
#--sbin-path=/usr/sbin/nginx |
|
|
|
|
|
|
|
|
|
|
##執行檔名稱和所在目錄 |
--modules-path=/usr/lib64/nginx/modules |
nginx動態模組的安裝目錄 |
--conf-path=/etc/nginx/nginx.conf 主設定檔名稱與所在目錄
--error-log-path=/var/log/nginx/error.log
全域錯誤日誌檔案名稱與所在目錄
|
--http-log-path=/var/log/nginx/access.log |
--pid-path=/var/run/nginx.pid
|
nginx.pid所在目錄,這是儲存主程序的程序ID檔 |
--lock-path=/var/run/nginx.lock |
nginx.lock所在目錄 |
--http-client-body-temp-path=/var/cache/nginx/client_temp | ##--http-proxy-temp -path=/var/cache/nginx/proxy_temp|
#--http -uwsgi-temp-path=/var/cache/nginx/uwsgi_temp |
#--http-scgi-temp-path=/var/cache/nginx/scgi_temp |
#執行對應模組時nginx所保留的暫存檔案
|
--user=nginx |
--group=nginx
| 設定Nginx進程啟動的使用者和使用者群組
Nginx客戶端狀態 | ||
---|---|---|
|
||
# #--with-http_sub_module HTTP內容替換
| #--with-cc-opt=||
|
||
#設定額外的參數將會被加入到CFLAGS變數
|
#--with-ld-opt= |
設定附加參數,連結系統庫 |
3. 安裝目錄詳解 |
查看nginx所有檔案的安裝位置 | |
預設路徑 類型 作用
| / etc/logrotate.d/nginx設定檔 | |
/etc/nginx
| /etc/nginx/nginx.conf/etc/nginx/conf.d | |
目錄、設定檔nginx主設定檔
|
/etc/nginx /fastcgi_params | |
/etc/nginx/scgi_params #設定檔cgi配置相關,fastcgi配置
|
/etc/nginx/koi-utf | |
/etc/nginx/win-utf |
設定檔 | #編碼轉換對應轉換檔 |
##/ etc/nginx/mime.types |
設定檔 | 設定http協定的Content-Type與副檔名對應關係 |
指令 | #解釋 |
---|---|
|
|
#nginx [-c <設定檔>] |
以指定的設定檔啟動nginx |
nginx -s quit |
正常停止nginx,Nginx在退出前完成已經接受的連線請求。 |
nginx -s stop |
#快速停止nginx,不管有沒有正在處理的請求。 |
nginx -s reload [-c <設定檔>] |
重載設定檔 |
##nginx -s reopen
| 重新開啟日誌檔案|
#nginx -v # #查看版本 |
|
#查看安裝時的編譯參數 |
nginx -s reload
- 指令載入修改後的設定檔,指令下達後發生以下事件
- Nginx的master程序檢查設定檔的正確性,若是錯誤則回傳錯誤訊息,nginx繼續採用原始設定檔進行工作(因為worker未受到影響)
- Nginx啟動新的worker進程,採用新的設定檔
- #Nginx將新的請求指派新的worker進程
- #Nginx等待先前的worker進程的全部請求都回傳後,關閉相關worker進程
#重複上面過程,直到全部舊的worker進程都被關掉去
以上就是本文的全部內容,希望對大家的學習有幫助,更多相關內容請關注PHP中文網!
相關推薦:
以上是快速建構Nginx及其基本參數的配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!