首頁 >後端開發 >php教程 >快速建構Nginx及其基本參數的配置

快速建構Nginx及其基本參數的配置

不言
不言原創
2018-07-11 14:34:271845瀏覽

這篇文章主要介紹了關於快速搭建Nginx及其基本參數的配置,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

Nginx的快速搭建和基本參數

一、Nginx簡介

1. Nginx簡述

Nginx是一個開源且高效能、可靠的HTTP中介軟體、代理服務。

2. 常見的HTTP服務

  • httpd - Apache

  • IIS - 微軟

  • GWE - Google

  • tomcat - Sun

#二、為什麼選擇Nginx

1. IO多路復用epoll

什麼是IO多路復用

多個描述符的I/O操作都能在一個執行緒內並發交替地順序完成,這就叫I/O多路復用,這裡的「復用」指的是複用同一個執行緒。

什麼是epoll

IO多路服用的實作方式:select、poll、epoll
select

基本原理:
select 函數監視的檔案描述子分3類,分別是writefds、readfds、和exceptfds。呼叫後select函數會阻塞,直到有描述子就緒(有資料 可讀、可寫入、或有except),或逾時(timeout指定等待時間,如果立即傳回設為null即可),函數會傳回。當select函數回傳後,可以透過遍歷fdset,來找到就緒的描述符。

select缺點:
1.能夠監視檔案描述子的數量有最大限制。
2.線性掃描效率低。

epoll

基本原理:
epoll支援水平觸發和邊緣觸發,最大的特點在於邊緣觸發,它只告訴進程哪些fd剛剛變成就緒態,只會通知一次。還有一個特點是,epoll使用「事件」的就緒通知方式,透過epoll_ctl註冊fd,一旦該fd就緒,核心就會採用類似callback的回呼機制來啟動該fd,epoll_wait便可以收到通知。

epoll的優點:
1.沒有最大並發連線的限制,能開啟的FD的上限遠大於1024(1G的記憶體上能監聽約10萬個連接埠) 。
2.效率提升,不是輪詢的方式,不會隨著FD數目的增加效率下降。
3.記憶體拷貝,利用mmap()檔案映射記憶體加速與核心空間的訊息傳遞;即epoll使用mmap減少複製開銷。

2. 輕量級

功能模組少

#程式碼模組化

3. CPU親和性(affinity)好

CPU親和性(affinity)是一種把CPU核心和Nginx工作進程綁定方式,把每個worker進程固定在一個CPU上執行,減少CPU的cache miss,獲得更好的性能。

4. sendfile

三、Nginx的快速搭建與基本參數(CentOS7)

1. yum方式安裝【參考】

建立/etc/yum.repos.d/nginx.repo文件,並輸入如下內容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
OS 可選值有centosrhel
OSRELEASE 為系統版本,例如 67 分別代表 6.x 和 7.x 的版本。

執行yum install -y nginx 安裝nginx

執行nginx -v 查看nginx版本

[root~]# nginx -v
nginx version: nginx/1.14.0

2. 編譯參數詳解

查看nginx安裝時的編譯參數

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'

安裝編譯參數詳解【參考】

HTTP伺服器的主請求日誌檔案的名稱和所在目錄##--http-proxy-temp -path=/var/cache/nginx/proxy_temp--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp--user=nginx設定Nginx進程啟動的使用者和使用者群組
編譯選項
#--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 -uwsgi-temp-path=/var/cache/nginx/uwsgi_temp #--http-scgi-temp-path=/var/cache/nginx/scgi_temp
#執行對應模組時nginx所保留的暫存檔案
--group=nginx
#--with-http_random_index_module

目錄中隨機選擇一個隨機主頁

--with-http_stub_status_moduleNginx客戶端狀態#--with-cc-opt=設定附加參數,連結系統庫查看nginx所有檔案的安裝位置
rpm -ql nginx
[root~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/nginx.conf
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/win-utf
/etc/nginx/mime.types
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/etc/nginx/modules
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.14.0
/usr/share/doc/nginx-1.14.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/ etc/logrotate.d/nginxNginx日誌輪轉,用於logrotate服務的日誌切割/etc/nginx/nginx.conf#/etc/nginx /conf.d/default.conf/etc/nginx/uwsig_params/etc/nginx/koi-win設定檔#編碼轉換對應轉換檔

# #--with-http_sub_module
HTTP內容替換



#設定額外的參數將會被加入到CFLAGS變數
#--with-ld-opt=
3. 安裝目錄詳解
預設路徑
類型作用

設定檔

/etc/nginx
/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與副檔名對應關係
## #/usr/lib/systemd/system/nginx-debug.service#########/usr/lib/systemd/system/nginx.service#########/etc/sysconfig/ nginx#########/etc/sysconfig/nginx-debug##########設定檔######用於設定係統守護程式管理員管理方式#### ###########/usr/lib64/nginx/modules##########/etc/nginx/mudules#########目錄###### Nginx模組目錄###############/usr/sbin/nginx#########/usr/sbin/nginx-debug##########指令######Nginx服務的啟動管理的終端指令###############/usr/share/doc/nginx-1.14.0######### #/usr/share/doc/nginx-1.14.0/COPYRIGHT#########/usr/share/man/man8/nginx.8.gz##########檔案、目錄######Nginx手冊和幫助文件###############/var/cache/nginx#########目錄######Nginx緩存目錄###############/var/log/nginx##########目錄#######Nginx日誌目錄######## ###

四、Nginx常用指令

重新開啟日誌檔案nginx -V# #nginx -t [-c <設定檔>]
指令 #解釋
#nginx [-c <設定檔>] 以指定的設定檔啟動nginx
nginx -s quit 正常停止nginx,Nginx在退出前完成已經接受的連線請求。
nginx -s stop #快速停止nginx,不管有沒有正在處理的請求。
nginx -s reload [-c <設定檔>] 重載設定檔
##nginx -s reopen
#nginx -v# #查看版本
#查看安裝時的編譯參數

檢查設定檔語法是否正確

    nginx -s  reload
  1. 指令載入修改後的設定檔,指令下達後發生以下事件

  2. Nginx的master程序檢查設定檔的正確性,若是錯誤則回傳錯誤訊息,nginx繼續採用原始設定檔進行工作(因為worker未受到影響)
  3. Nginx啟動新的worker進程,採用新的設定檔
  4. #Nginx將新的請求指派新的worker進程
  5. #Nginx等待先前的worker進程的全部請求都回傳後,關閉相關worker進程

#重複上面過程,直到全部舊的worker進程都被關掉去

以上就是本文的全部內容,希望對大家的學習有幫助,更多相關內容請關注PHP中文網!
相關推薦:

#####使用nginx在一台伺服器部署多個Web Server##########

以上是快速建構Nginx及其基本參數的配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn