本篇爲慧響技術角「源產控」專題系列第2篇文章。html
慧響技術角「源產控」專題,將聚焦開源、國產化、自主可控三個方向的技術,以操做系統、中間件、數據庫、程序應用等爲粗分類,更新相關技術的發展趨勢、探究技術核心的深度使用、系統總結技術總體架構,爲對相關技術的學習者提供可觀的資料,亦爲我的同步學習總結的筆記,以饗讀者。nginx
本篇對在CentOS 8上使用Nginx 1.18的基本安裝與基本使用進行介紹與總結,將來對在CentOS 8上使用Nginx 1.18的相關,將陸續更新其使用總結、性能調優等方面的系列文章,敬請期待。正則表達式
Nginx(發音同「engine X」)是異步框架的網頁服務器,也能夠用做反向代理、負載平衡器和HTTP緩存。該軟件由伊戈爾·賽索耶夫建立並於2004年首次公開發布。2011年成立同名公司以提供支持。2019年3月11日,Nginx公司被F5 Networks以6.7億美圓收購。Nginx是免費的開源軟件,根據類BSD許可證的條款發佈。一大部分Web服務器使用Nginx,一般做爲負載均衡器。shell
其開源版本官網是nginx.org。商業版本官網是nginx.com。數據庫
不過提及來Nginx,就不得不提在Nginx被F5收購後Nginx做者被捕的事兒了。據外媒報道,2019年12月12日,俄羅斯警方搜查了商業服務器公司Nginx,並當場帶走了兩位聯合創始人。。關於這個事兒,我在文章《戰疫之下,哪些事可能會改變咱們》也拿其爲例對我的品牌與口碑塑造的一些風險進行了闡述。有興趣的能夠點進去看一看。vim
對於Nginx,因爲其發展迅速、性能卓越、開源開放,收割了不少Web服務提供與負載均衡、反向代理場景的市場,也衍生了很優秀的二次開發版本例如國人開發的OpenResty、阿里開源的Tengine等。在「在CentOS 8上使用Nginx 1.18」系列後面將擇機對兩個優秀的二次開發進行介紹。瀏覽器
雖然咱們能夠經過yum -y install nginx
進行安裝,可是在「源產庫」系列第一篇文章《CentOS 8之初相識》中有過介紹,其鏡像源預編譯的版本爲1.14,而截至文章發表之日Nginx的穩定版本已更新到了1.18,主線版本更新到了1.19,所以咱們使用官網的穩定源碼版本進行下載編譯。緩存
小知識:關於穩定版本和主線版本。前者是Nginx更新接收針對高嚴重性錯誤的修復,但不會使用最新的功能,其版本號的第二位用偶數表示。然後者是Nginx是更新活躍的開發分支,其添加了最新功能和錯誤修復,其版本號的第二位用奇數表示。不過在Nginx中,「穩定」指的是功能和更新頻率,它與軟件質量無關。穩定分支在其生命週期中從不接收新功能,而且一般僅接收一個或兩個更新,用於修復嚴重的錯誤。 穩定分支的生命週期通常是一年,每一年四月官方就會中止對當前穩定分支的維護,再也不提供錯誤修復補丁。服務器
下載並解壓nginx-1.18.0.tar.gz
:架構
wget http://nginx.org/download/nginx-1.18.0.tar.gz;
tar -zxvf nginx-1.18.0.tar.gz;
複製代碼
進入目錄cd nginx-1.18.0
,目錄結構以下:
總用量 1204
drwxr-xr-x 6 1001 1001 326 7月 7 18:50 auto
-rw-r--r-- 1 1001 1001 302863 4月 21 22:09 CHANGES
-rw-r--r-- 1 1001 1001 462213 4月 21 22:09 CHANGES.ru
drwxr-xr-x 2 1001 1001 168 7月 7 18:50 conf
-rwxr-xr-x 1 1001 1001 2502 4月 21 22:09 configure
drwxr-xr-x 4 1001 1001 72 7月 7 18:50 contrib
drwxr-xr-x 2 1001 1001 40 7月 7 18:50 html
-rw-r--r-- 1 1001 1001 1397 4月 21 22:09 LICENSE
drwxr-xr-x 2 1001 1001 21 7月 7 18:50 man
-rw-r--r-- 1 1001 1001 49 4月 21 22:09 README
drwxr-xr-x 9 1001 1001 91 7月 7 18:50 src
複製代碼
conf
文件夾內爲Nginx的初始配置文件,contrib
文件夾放置了三位開源貢獻者貢獻的三個插件內容,html
文件夾爲默認站點文件內容,src
文件夾爲Nginx源碼。configure
文件爲編譯的配置文件。
拷貝Nginx安裝包內以下文件到路徑,可讓vim對nginx.conf
的語言語法進行高亮解析:
cp -r contrib/vim/* ~/.vim/;
複製代碼
./configure --help
能夠查看Nginx編譯支持參數列表,configure
文件進行設置後,會在objs
文件內生成Nginx的安裝所需文件,其中ngx_modules.c
,該文件決定接下來編譯有哪些模塊須要編譯進Nginx。
本文不涉及模塊的編譯使用,咱們使用最簡單的編譯設置進行編譯安裝:
./configure --prefix=/usr/local/nginx;
複製代碼
若是報以下錯誤,請執行命令yum -y install pcre-devel openssl openssl-devel
進行安裝:
...
checking for PCRE library ... not found
checking for PCRE library in /usr/local/ ... not found
checking for PCRE library in /usr/include/pcre/ ... not found
checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
複製代碼
出現如下內容,即爲configure
文件設置完成:
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using system zlib library
nginx path prefix: "/usr/local/nginx/"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
複製代碼
緊接着執行make
命令,執行後,在objs
文件夾下能夠看到編譯後的nginx
二進制文件和目標文件。無報錯說明正常。如若首次安裝Nginx,緊接着執行make install
安裝便可。若是是進行Nginx升級,make install
是不該該用的,須要作的是將該目錄下生成的nginx
二進制文件拷貝到已有Nginx的二進制文件相應目錄中。
安裝完成,輸入以下命令進行啓動Nginx:
/usr/local/nginx/sbin/nginx;
複製代碼
Nginx基本指令格式爲nginx -s reload
,具體指令解釋以下:
nginx -?/-h
爲顯示幫助信息;nginx -c
爲使用指定的配置文件,後跟配置文件路徑;nginx -g
爲指定配置指令,後跟須要指定的配置指令;nginx-p
爲指定運行目錄,後跟運行目錄路徑;nginx -s
發送信號,其中後跟參數stop
爲當即中止服務、quit
爲有序中止服務;reload
爲重載配置文件、reopen
爲從新開始記錄日誌文件;nginx -t/-T
測試配置文件是否有語法錯誤;nginx -v、nginx -V
打印Nginx的版本信息或編譯信息。在瀏覽器訪問IP,如圖,能夠訪問即正常。
ps -ef | grep nginx
查看進程狀況:
root 8556 1 0 19:24 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 8557 8556 0 19:24 ? 00:00:00 nginx: worker process
root 8561 8702 0 19:25 pts/0 00:00:00 grep --color=auto nginx
複製代碼
如今安裝好的基本Nginx,完整的nginx.conf
文件以下:
#user nobody;
worker_processes auto;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
server {
listen 80;
server_name localhost;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
複製代碼
Nginx配置語法有以下的規則:
;
結尾,指令與參數間以空格符號分隔;{}
將多條指令組織在一塊兒;include
語句容許組合多個配置文件以提高可維護性;#
添加註釋,提升可讀性;$
可調用變量;Nginx有多種指令塊,其中http
塊表示此爲HTTP協議處理塊、upstream
表示有上游服務提供的配置信息、location
對應URL的表達式、server
對應一個或一組域/域名的訪問。
如下是配置文件部分的參數解釋:
worker_processes
爲設定工做進程數,若設置爲auto
則Nginx將根據機器的內核數進行設定分配,如無特殊需求通常建議設置爲auto
。error_log
設定錯誤日誌的路徑與等級,其中等級有debug
, info
, notice
, warn
, error
, crit
, alert
, emerg
幾種,以嚴重性從高到低的順序列出。根據官方文檔的解釋,設定某個級別的意義是該級別及以上的日誌會被打印在日誌文件中,例如設置info
則包括其自己在內以及notice
, warn
, error
, crit
, alert
, emerg
都會被列出。若第二個字段爲空,默認爲error
。log_format main 'XXX'
設定日誌格式,main
標示爲命名,在遇到對不一樣域名進行不一樣格式的命名記錄時須要用到,server
區塊下access_log logs/access.log main;
能夠以main格式進行記錄。關於其餘參數例如pid
、worker_connections
等,以及server
、upstream
、location
指令塊,將在後續的「在CentOS 8上使用Nginx 1.18」系列文章中陸續介紹與展現使用方法。