nginx是高性能的輕量級web服務器。html
特性:前端
1.http代理nginx
2.反向代理c++
3.負載均衡web
4.緩存機制正則表達式
一,安裝及啓動(centos7,nginx 1.14.0)centos
1.下載瀏覽器
wget http://nginx.org/download/nginx-1.14.0.tar.gz
2.安裝緩存
#第三方庫
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel yum -y install pcre-devel #可使用pcre-config —version查看版本
#解壓安裝包
tar zxvf nginx-1.14.0.tar.gz
#從configure腳本自動生成makefile
cd nginx-1.14.0
./configure --prefix=/usr/local/webserver/nginx #--prefix是指定安裝路徑,根據本身的狀況而定
#編譯安裝
cd nginx-1.14.0
make && make install
#編譯成功後查看版本
/usr/local/webserver/nginx/sbin/nginx -v #安裝後的目錄有四個conf,html,logs,sbin
3.啓動bash
/usr/local/webserver/nginx/sbin/nginx
瀏覽器訪問
二,經常使用指令
1.啓動測試文件
/usr/local/webserver/nginx/sbin/nginx -t
2.指定配置文件啓動
/usr/local/webserver/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
3.重啓
/usr/local/webserver/nginx/sbin/nginx -s reopen
4.重載配置文件,也有重啓的做用
/usr/local/webserver/nginx/sbin/nginx -s reload
5.中止
/usr/local/webserver/nginx/sbin/nginx -s stop
三,配置結構圖
結構說明:
1)全局塊:做用於nginx全局,一般包括如下部分
2)events塊:影響nginx服務器與用戶的網絡鏈接,包括:
3)http塊:
4)server塊:
5)location塊:
四,配置實例
實例解
#全局塊
user nobody nobody; #指定能運行nginx的用戶(組) 指令格式:user user [group];若是不配置,或者爲本例配置,則全部用戶均可以啓動nginx進程 worker_processes 3; #nginx的工做進程數,3表示最多能夠產生3個工做進程,能夠經過ps -aux|grep nginx查看到,若是選auto,則爲自動檢測 error_log logs/error.log; #錯誤日誌的路徑 pid logs/nginx.pid; #nginx進程是做爲系統守護進程運行的,須要在某文檔中保存當前當前運行程序的主進程號。指令格式pid file;指定文件名稱,本例中是默認值 #如下是全局塊中此例沒有列出的
#配置文件引入。指令格式include file;用於引入第三方模塊配置或其餘nginx配置
#events塊
events { use epoll; #事件驅動模型的選擇,能夠選擇如select、poll、kqueue、epoll、rtsig worker_connections 1024; #表示容許每個worker process能夠同時開啓的最大鏈接數,默認是512
#如下是events塊沒有列出的
#設置網絡鏈接的序列化。指令格式:accept_mutex on|off; 默認是on狀態,表示會對多個nginx進程接收鏈接進行序列化,防止多個進程對鏈接的爭搶,#即worker將是以串行方式來處理,其中有一個worker會被喚醒。#而off 表示全部worker都會被喚醒,但只有一個worker能得到新鏈接,其餘會從新進入休眠。
#是否容許同時接收多個網絡鏈接。指令格式:multi_accept on|off。默認是off,便是每一個worker process一次只能接收一個新到達的網絡鏈接 } #http塊 http {
#http塊全局 include mime.types; #將mime.types文件包含進來,能夠經過cat mime.type來查看mime.types的內容 default_type application/octet-stream; #指令格式是:default_type mime-type;其中MIME-Type指的是網絡資源的媒體類型,也即前端請求的資源類型,是mime.types的內容的一種。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #定義個一個名爲main的日誌格式
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; #自定義服務日誌的路徑+名稱,指令格式是access_log path [format],其中format是日誌的字符串格式,可使用log_format定義格式,此處是使用名稱爲main的format格式,
sendfile on; #是否容許sendfile方式傳輸文件,指令格式爲sendfile on|off;sendfile_max_chunk size; size=0表示每一個worker process每次調用sendfile()傳輸的數據的最大值。不限制,默認是0
keepalive_timeout 65; #表示server端對鏈接的保持時間。默認是75s,指令格式爲:keeplive_timeout timeout [header_timeout];header_timeout表示在應答報文頭部的keep-Alive域設置超時時間「Keep-Alive:timeout=header_timeout"
#如下沒有在http塊列出
#單鏈接請求數上限,指令格式爲:keepalive_requests number; #用於限制用戶經過某一鏈接向nginx服務器發起請求的次數
#server塊 server {
#server全局塊 listen 8088; #設置網絡監聽,指令格式兩種:1.listen IP [:port];2.listen port;1是監聽某IP的全部(或某一)端口,2是監聽某一端口的全部IP server_name codesheep; #基於名稱和IP的虛擬主機配置,指令格式:server_name name1 name2 ...;此處的name支持正則表達式,例如:server_name ~^www\d+\.myserver\.com$
3 access_log /codesheep/webserver/server1/log/access.log; #自定義日誌 error_page 404 /404.html; #錯誤提示與錯誤頁
#location塊 location /server1/location1 { #location配置,指令格式:location [ = | ~ | ~* | ^~ ] uri {...};其中uri分爲標準uri 和 正則uri;
# =(請求字符串與uri嚴格匹配) 和 ^~(尋找標識uri和請求字符串匹配度最高的location後,當即用此location處理請求) 用於標準uri
# ~(區分大小寫)和 ~*(不區分大小寫) 用於正則uri root /codesheep/webserver; #請求根目錄配置,指令格式:root path;path是nginx接收請求後查找資源的根目錄路徑;還能夠經過alias 更改location接收到的URI請求路徑,指令爲:alias path index index.server2-location1.htm; #設置網站的默認首頁,指令格式:index file ....;其中file能夠包含多個用空格隔開的文件名,先找到哪一個就用哪一個響應請求 } location /server1/location2 { root /codesheep/webserver; index index.server2-location2.htm; } } server { listen 8089; server_name 192.168.31.177; access_log /codesheep/webserver/server2/log/access.log; error_page 404 /404.html; location /server2/location1 { root /codesheep/webserver; index index.server2-location1.htm; } location /srv2/loc2 { alias /codesheep/webserver/server2/location2/; index index.server2-location2.htm; } location = /404.html { root /codesheep/webserver/; index 404.html; } } }
https://www.jianshu.com/p/dc61f1789f47
https://www.jianshu.com/p/39bdc25adaf0