一芬骄、http請求
先補充一點 http 知識
-
yum install -y curl
curl 可以理解成是一個瀏覽器猾愿,只是不能看到頁面,看到的是http請求的信息账阻。 -
curl http://www.baidu.com
使用curl請求baidu地址匪蟀,可以看到返回的html代碼(即服務(wù)端返回的響應(yīng)正文) -
curl -v http://www.baidu.com >/dev/null
(">/dev/null" 表示將返回的內(nèi)容重定向到linux空設(shè)備上)
執(zhí)行上述命令,可以看到詳細信息宰僧,>
標注的是request信息,包括請求行材彪,請求頭部,請求數(shù)據(jù)琴儿,<
標注的是response信息段化,包括狀態(tài)行,信息報頭造成,響應(yīng)正文显熏。
二、Nginx主配置etc/nginx/nginx.conf
詳解
執(zhí)行vi etc/nginx/nginx.conf
可以看到以下配置內(nèi)容
user nginx ;
worker_processes 4;
error_log /var/log/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
(1) user nginx
設(shè)置nginx 服務(wù)的系統(tǒng)使用用戶, 默認即是nginx晒屎,可不設(shè)置
(2) worker_processes 4;
工作進程數(shù), 一般設(shè)置為和cpu核數(shù)一樣
(3) error_log /var/logs/error.log warn;
錯誤日志存放目錄(主要用于Nginx處理http請求錯誤的狀態(tài)喘蟆,以及Nginx本身服務(wù)運行錯誤的狀態(tài) ), warn表示錯誤日志的級別
(4)pid /var/run/nginx.pid;
進程pid存放位置
(5) events
下的worker_connections
: 每個進程允許的最大連接數(shù)量(最大設(shè)至65535),use
: 工作進程數(shù)
http下的一些配置及其意義
(1) include /etc/nginx/mime.types;
文件擴展名與文件類型映射表
(2) default_type application/octet-stream;
默認文件類型
(3) log_format
用來設(shè)置日志格式,只能配置在http模塊下鼓鲁。其中$remote_addr
蕴轨、$remote_addr
等$
開頭的都是Nginx中的變量,通過一些符號連接在一起骇吭,組成nginx的access_log日志格式橙弱。
-
$remote_addr
客戶端地址 -
$remote_user
客戶端請求Nginx認證的用戶名,如果默認沒有開啟認證模塊燥狰,將不會記錄 -
$time_local
Nginx時間 -
$request
request頭請求行 -
$status
response返回的狀態(tài)碼 -
$body_bytes_sent
服務(wù)端響應(yīng)給客戶端的body信息的大小 -
$http_referer
HTTP Referer是header的一部分棘脐,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時候,一般會帶上Referer龙致,告訴服務(wù)器我是從哪個頁面鏈接過來的蛀缝,服務(wù)器基此可以獲得一些信息用于處理 -
$http_user_agent
http頭信息的一部分, -
$http_x_forwarded_for
簡稱XFF頭目代,它代表客戶端屈梁,也就是HTTP的請求端真實的IP,只有在通過了HTTP 代理或者負載均衡服務(wù)器時才會添加該項像啼。它不是RFC中定義的標準請求頭信息
(4) access_log
指定日志文件的存放路徑俘闯、格式和緩存大小,主要依賴于log_format的配置,記錄到每次http請求的訪問狀態(tài),后面的main與log_format main
中的main是對應(yīng)的忽冻,表示將日志按log_format main
中的main的格式要求記錄到access_log里
(5) sendfile on;
開啟高效文件傳輸模式真朗,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來 輸出文件,對于普通應(yīng)用設(shè)為 on僧诚,如果用來進行下載等應(yīng)用磁盤IO重負載應(yīng)用遮婶,可設(shè)置 為off蝗碎,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負載旗扑。注意:如果圖片顯示不正常 把這個改成off蹦骑。
(6)tcp_nopush on;
防止網(wǎng)絡(luò)阻塞
(7) autoindex on;
開啟目錄列表訪問,合適下載服務(wù)器臀防,默認關(guān)閉眠菇。
(8)keepalive_timeout 65;
長連接超時時間,單位是秒
(9)gzip on;
開啟gzip壓縮輸出
(10) include /etc/nginx/conf.d/*.conf;
nginx讀完etc/nginx/nginx.conf后袱衷,同時會讀etc/nginx/conf.d/下所有的.conf文件(默認/etc/nginx/conf.d目錄下只有一個default.conf文件)
三捎废、配置文件 etc/nginx/conf.d/default.conf 詳解
server{
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
(1) listen
該server 監(jiān)聽的端口
(2) server_name
服務(wù)名稱(域名)
(3) location
一個server 可以有多個location,。
root
當(dāng)某一個server里面沒有其他的路徑可以訪問時 致燥,會默認訪問該配置目錄下的文件登疗。
index
定義首頁默認訪問的是哪個文件, 如果index.html沒有找到就會去找index.htm。
ls /usr/share/nginx/html
可以看到里面有兩個50x.html 和index.html兩個文件嫌蚤,如下圖所示:
可以嘗試修改index.html, 保存后用瀏覽器訪問server 的 ip ( 執(zhí)行
ip a
可以看到server的ip)辐益, 即可看到修改后的結(jié)果。(4)
error_page
定義當(dāng)返回狀態(tài)碼是500脱吱,502智政,503,504時急凰,返回錯誤頁面50x.html,女仰。50x.html 頁面的位置在root /usr/share/nginx/html 中猜年。可以做如下嘗試:
先訪問一個不存在的路徑抡锈,發(fā)現(xiàn)返回了404頁面。
然后在error_page中加入狀態(tài)碼404乔外,再重啟服務(wù)(
systemctl restart nginx.service
或systemctl reload nginx.service
)床三,重新訪問這個不存在的路徑,發(fā)現(xiàn)返回了50x.html頁面杨幼。
四 撇簿、Nginx變量
(1) HTTP請求變量
-
arg_PARAMETER
將arg_
+ http請求參數(shù)名作為一個變量 -
http_HEADER
request請求的HEAD -
sent_http_HEADER
服務(wù)端返回給客戶端的response的HEAD
(2)內(nèi)置變量
官網(wǎng)查看內(nèi)置變量
(3)自定義變量