轉(zhuǎn)載自linux安裝nginx(詳細(xì)), 略加整理
一袭艺、nginx重定向
- 重定向到www
# if按照格式書寫,括號(hào)前后的空格必須帶著
server {
listen 80;
# listen 443;
server_name www.xxx.com xxx.com;
if ($host != 'www.xxx.com') {
rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
}
}
或
server {
server_name xxx.com;
rewrite ^(.*)$ http://www.xxx.com$1 permanent;
}
- 重定向到https
# (提前配置好SSL證書)
server {
listen 80;
server_name www.xxx.com xxx.com;
rewrite ^(.*)$ https://$host$1;
}
二屯仗、Nginx跨域配置
產(chǎn)生跨域問題的主要原因就在于 「同源策略」 冗恨,為了保證用戶信息安全指黎,防止惡意網(wǎng)站竊取數(shù)據(jù)廓啊,同源策略是必須的甸祭,否則cookie可以共享呢蔫。由于http無狀態(tài)協(xié)議通常會(huì)借助cookie來實(shí)現(xiàn)有狀態(tài)的信息記錄恕曲,例如用戶的身份/密碼等鹏氧,因此一旦cookie被共享,那么會(huì)導(dǎo)致用戶的身份信息被盜取佩谣。
同源策略主要是指三點(diǎn)相同把还,「「協(xié)議+域名+端口」」 相同的兩個(gè)請(qǐng)求,則可以被看做是同源的茸俭,但如果其中任意一點(diǎn)存在不同吊履,則代表是兩個(gè)不同源的請(qǐng)求,同源策略會(huì)限制了不同源之間的資源交互调鬓。
解決:在nginx.conf中稍微添加一點(diǎn)配置:
location / {
# 允許跨域的請(qǐng)求艇炎,可以自定義變量$http_origin,*表示所有
add_header 'Access-Control-Allow-Origin' *;
# 允許攜帶cookie請(qǐng)求
add_header 'Access-Control-Allow-Credentials' 'true';
# 允許跨域請(qǐng)求的方法:GET,POST,OPTIONS,PUT
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT';
# 允許請(qǐng)求時(shí)攜帶的頭部信息腾窝,*表示所有
add_header 'Access-Control-Allow-Headers' *;
# 允許發(fā)送按段獲取資源的請(qǐng)求
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
# 一定要有W鹤佟!虹脯!否則Post請(qǐng)求無法進(jìn)行跨域驴娃!
# 在發(fā)送Post跨域請(qǐng)求前,會(huì)以O(shè)ptions方式發(fā)送預(yù)檢請(qǐng)求循集,服務(wù)器接受時(shí)才會(huì)正式請(qǐng)求
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
# 對(duì)于Options方式的請(qǐng)求返回204唇敞,表示接受跨域請(qǐng)求
return 204;
}
}
三、Nginx實(shí)現(xiàn)IP黑白名單
有時(shí)候往往有些需求,可能某些接口只能開放給對(duì)應(yīng)的合作商疆柔,或者購買/接入API的合作伙伴咒精,那么此時(shí)就需要實(shí)現(xiàn)類似于IP白名單的功能。而有時(shí)候有些惡意攻擊者或爬蟲程序旷档,被識(shí)別后需要禁止其再次訪問網(wǎng)站模叙,因此也需要實(shí)現(xiàn)IP黑名單。那么這些功能無需交由后端實(shí)現(xiàn)彬犯,可直接在Nginx中處理。
Nginx做黑白名單機(jī)制查吊,主要是通過allow谐区、deny配置項(xiàng)來實(shí)現(xiàn):
allow xxx.xxx.xxx.xxx; # 允許指定的IP訪問,可以用于實(shí)現(xiàn)白名單逻卖。
deny xxx.xxx.xxx.xxx; # 禁止指定的IP訪問宋列,可以用于實(shí)現(xiàn)黑名單。
同時(shí)屏蔽/開放多個(gè)IP訪問時(shí)评也,如果所有IP全部寫在nginx.conf文件中定然是不現(xiàn)實(shí)的炼杖,這種方式比較冗余,那么可以新建兩個(gè)文件BlocksIP.conf盗迟、WhiteIP.conf:
# --------黑名單:BlocksIP.conf---------
deny 192.177.12.222; # 屏蔽192.177.12.222訪問
deny 192.177.44.201; # 屏蔽192.177.44.201訪問
deny 127.0.0.0/8; # 屏蔽127.0.0.1到127.255.255.254網(wǎng)段中的所有IP訪問
# --------白名單:WhiteIP.conf---------
allow 192.177.12.222; # 允許192.177.12.222訪問
allow 192.177.44.201; # 允許192.177.44.201訪問
allow 127.45.0.0/16; # 允許127.45.0.1到127.45.255.254網(wǎng)段中的所有IP訪問
deny all; # 除開上述IP外坤邪,其他IP全部禁止訪問
分別將要禁止/開放的IP添加到對(duì)應(yīng)的文件后,可以再將這兩個(gè)文件在nginx.conf中導(dǎo)入:
http{
# 屏蔽該文件中的所有IP
include /soft/nginx/IP/BlocksIP.conf;
server{
location xxx {
# 某一系列接口只開放給白名單中的IP
include /soft/nginx/IP/blockip.conf;
}
}
}
對(duì)于文件具體在哪兒導(dǎo)入罚缕,這個(gè)也并非隨意的艇纺,如果要整站屏蔽/開放就在http中導(dǎo)入,如果只需要一個(gè)域名下屏蔽/開放就在sever中導(dǎo)入邮弹,如果只需要針對(duì)于某一系列接口屏蔽/開放IP黔衡,那么就在location中導(dǎo)入。
當(dāng)然腌乡,上述只是最簡(jiǎn)單的IP黑/白名單實(shí)現(xiàn)方式盟劫,同時(shí)也可以通過ngx_http_geo_module
、ngx_http_geo_module
第三方庫去實(shí)現(xiàn)(這種方式可以按地區(qū)与纽、國(guó)家進(jìn)行屏蔽侣签,并且提供了IP庫)。
四急迂、Nginx防盜鏈設(shè)計(jì)
首先了解一下何謂盜鏈:「「盜鏈即是指外部網(wǎng)站引入當(dāng)前網(wǎng)站的資源對(duì)外展示」」 硝岗,來舉個(gè)簡(jiǎn)單的例子理解:
好比壁紙網(wǎng)站X站、Y站袋毙,X站是一點(diǎn)點(diǎn)去購買版權(quán)型檀、簽約作者的方式,從而積累了海量的壁紙素材听盖,但Y站由于資金等各方面的原因胀溺,就直接通過<img src="X站/xxx.jpg" />
這種方式照搬了X站的所有壁紙資源裂七,繼而提供給用戶下載。
那么如果我們自己是這個(gè)X站的Boss仓坞,心中必然不爽背零,那么此時(shí)又該如何屏蔽這類問題呢?那么接下來要敘說的「「防盜鏈」」 登場(chǎng)了无埃!
Nginx的防盜鏈機(jī)制實(shí)現(xiàn)徙瓶,跟一個(gè)頭部字段:Referer有關(guān),該字段主要描述了當(dāng)前請(qǐng)求是從哪兒發(fā)出的嫉称,那么在Nginx中就可獲取該值侦镇,然后判斷是否為本站的資源引用請(qǐng)求,如果不是則不允許訪問织阅。Nginx中存在一個(gè)配置項(xiàng)為valid_referers
壳繁,正好可以滿足前面的需求,語法如下:
valid_referers none | blocked | server_names | string ...;
- none:表示接受沒有Referer字段的HTTP請(qǐng)求訪問荔棉。
- blocked:表示允許http://或https//以外的請(qǐng)求訪問闹炉。
- server_names:資源的白名單,這里可以指定允許訪問的域名润樱。
- string:可自定義字符串渣触,支配通配符、正則表達(dá)式寫法壹若。
簡(jiǎn)單了解語法后昵观,接下來的實(shí)現(xiàn)如下:
# 在動(dòng)靜分離的location中開啟防盜鏈機(jī)制
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css){
# 最后面的值在上線前可配置為允許的域名地址
valid_referers blocked 192.168.12.129;
if ($invalid_referer) {
# 可以配置成返回一張禁止盜取的圖片
# rewrite ^/ http://xx.xx.com/NO.jpg;
# 也可直接返回403
return 403;
}
root /soft/nginx/static_resources;
expires 7d;
}
根據(jù)上述中的內(nèi)容配置后,就已經(jīng)通過Nginx實(shí)現(xiàn)了最基本的防盜鏈機(jī)制舌稀,最后只需要額外重啟一下就好啦啊犬!當(dāng)然,對(duì)于防盜鏈機(jī)制實(shí)現(xiàn)這塊壁查,也有專門的第三方模塊ngx_http_accesskey_module
實(shí)現(xiàn)了更為完善的設(shè)計(jì)觉至,感興趣的小伙伴可以自行去看看。
五睡腿、Nginx配置SLL證書
隨著越來越多的網(wǎng)站接入HTTPS语御,因此Nginx中僅配置HTTP還不夠,往往還需要監(jiān)聽443端口的請(qǐng)求席怪,HTTPS為了確保通信安全应闯,所以服務(wù)端需配置對(duì)應(yīng)的數(shù)字證書,當(dāng)項(xiàng)目使用Nginx作為網(wǎng)關(guān)時(shí)挂捻,那么證書在Nginx中也需要配置碉纺,接下來簡(jiǎn)單聊一下關(guān)于SSL證書配置過程:
①先去CA機(jī)構(gòu)或從云控制臺(tái)中申請(qǐng)對(duì)應(yīng)的SSL證書,審核通過后下載Nginx版本的證書。
②下載數(shù)字證書后骨田,完整的文件總共有三個(gè):.crt耿导、.key、.pem:
- .crt:數(shù)字證書文件态贤,.crt是.pem的拓展文件舱呻,因此有些人下載后<mark style="box-sizing: border-box; outline: 0px; user-select: auto !important; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); font-synthesis-style: auto; overflow-wrap: break-word;">可能沒有</mark>。
- .key:服務(wù)器的私鑰文件悠汽,及非對(duì)稱加密的私鑰箱吕,用于解密公鑰傳輸?shù)臄?shù)據(jù)。
- .pem:Base64-encoded編碼格式的源證書文本文件柿冲,可自行根需求修改拓展名茬高。
③在Nginx目錄下新建certificate目錄,并將下載好的證書/私鑰等文件上傳至該目錄姻采。
④最后修改一下nginx.conf文件即可雅采,如下:
# ----------HTTPS配置-----------
server {
# 監(jiān)聽HTTPS默認(rèn)的443端口
listen 443;
# 配置自己項(xiàng)目的域名
server_name www.xxx.com;
# 打開SSL加密傳輸
ssl on;
# 輸入域名后爵憎,首頁文件所在的目錄
root html;
# 配置首頁的文件名
index index.html index.htm index.jsp index.ftl;
# 配置自己下載的數(shù)字證書
ssl_certificate certificate/xxx.pem;
# 配置自己下載的服務(wù)器私鑰
ssl_certificate_key certificate/xxx.key;
ssl_session_cache shared:SSL:1m;
# 停止通信時(shí)慨亲,加密會(huì)話的有效期,在該時(shí)間段內(nèi)不需要重新交換密鑰
ssl_session_timeout 5m;
# TLS握手時(shí)宝鼓,服務(wù)器采用的密碼套件
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# 服務(wù)器支持的TLS版本
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
# 開啟由服務(wù)器決定采用的密碼套件
ssl_prefer_server_ciphers on;
location / {
....
}
}
# ---------HTTP請(qǐng)求轉(zhuǎn)HTTPS-------------
server {
# 監(jiān)聽HTTP默認(rèn)的80端口
listen 80;
# 如果80端口出現(xiàn)訪問該域名的請(qǐng)求
server_name www.xxx.com;
# 將請(qǐng)求改寫為HTTPS(這里寫你配置了HTTPS的域名)
rewrite ^(.*)$ https://www.xxx.com;
}
根據(jù)如上配置了Nginx后刑棵,你的網(wǎng)站即可通過https://的方式訪問,并且當(dāng)客戶端使用http://的方式訪問時(shí)蛉签,會(huì)自動(dòng)將其改寫為HTTPS請(qǐng)求沥寥。
六、Nginx動(dòng)靜分離
在項(xiàng)目上線部署時(shí)邑雅,這些靜態(tài)資源會(huì)img|html|js|css...
一起打成包片橡,那這對(duì)于后端服務(wù)器的壓力是尤為巨大的。
①先在部署Nginx的機(jī)器捧书,Nginx目錄下創(chuàng)建一個(gè)目錄static_resources
:
mkdir static_resources
②將項(xiàng)目中所有的靜態(tài)資源全部拷貝到該目錄下骤星,而后將項(xiàng)目中的靜態(tài)資源移除重新打包经瓷。
③稍微修改一下nginx.conf
的配置,增加一條location匹配規(guī)則:
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css){
root /soft/nginx/static_resources;
expires 7d;
}
然后照常啟動(dòng)nginx和移除了靜態(tài)資源的WEB服務(wù)洞难,你會(huì)發(fā)現(xiàn)原本的樣式、js效果歪泳、圖片等依舊有效。
其中static目錄下的xxx.css文件已被移除呐伞,但效果依舊存在伶氢。
<mark style="box-sizing: border-box; outline: 0px; user-select: auto !important; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); font-synthesis-style: auto; overflow-wrap: break-word;">也可以將靜態(tài)資源上傳到文件服務(wù)器中,然后location中配置一個(gè)新的upstream指向癣防。</mark>
七蕾盯、Nginx資源壓縮
在Nginx也提供了三個(gè)支持資源壓縮的模塊ngx_http_gzip_module、ngx_http_gzip_static_module望拖、ngx_http_gunzip_module
http{
# 開啟壓縮機(jī)制
gzip on;
# 指定會(huì)被壓縮的文件類型(也可自己配置其他類型)
gzip_types text/plain application/javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
# 設(shè)置壓縮級(jí)別挫鸽,越高資源消耗越大,但壓縮效果越好
gzip_comp_level 5;
# 在頭部中添加Vary: Accept-Encoding(建議開啟)
gzip_vary on;
# 處理壓縮請(qǐng)求的緩沖區(qū)數(shù)量和大小
gzip_buffers 16 8k;
# 對(duì)于不支持壓縮功能的客戶端請(qǐng)求不開啟壓縮機(jī)制
gzip_disable "MSIE [1-6]\."; # 低版本的IE瀏覽器不支持壓縮
# 設(shè)置壓縮響應(yīng)所支持的HTTP最低版本
gzip_http_version 1.1;
# 設(shè)置觸發(fā)壓縮的最小閾值
gzip_min_length 2k;
# 關(guān)閉對(duì)后端服務(wù)器的響應(yīng)結(jié)果進(jìn)行壓縮
gzip_proxied off;
}
八盔沫、Nginx反向代理-負(fù)載均衡
啟動(dòng)Nginx枫匾,然后再啟動(dòng)兩個(gè)web服務(wù),第一個(gè)WEB服務(wù)啟動(dòng)時(shí)谴忧,將端口號(hào)改為8080等脂,第二個(gè)WEB服務(wù)啟動(dòng)時(shí),將其端口號(hào)改為8090搏屑。
upstream nginx_boot{
# 30s內(nèi)檢查心跳發(fā)送兩次包粉楚,未回復(fù)就代表該機(jī)器宕機(jī)亮垫,請(qǐng)求分發(fā)權(quán)重比為1:2
server xxx:8080 weight=100 max_fails=2 fail_timeout=30s;
server xxx:8090 weight=200 max_fails=2 fail_timeout=30s;
# 這里的IP請(qǐng)配置成你WEB服務(wù)所在的機(jī)器IP
}
server {
location / {
root html;
index index.html index.htm index.ftl;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 請(qǐng)求交給名為nginx_boot的upstream上
proxy_pass http://nginx_boot;
}
}
然后每次刷新頁面就能看到不同的界面了饮潦。
因?yàn)榕渲昧苏?qǐng)求分發(fā)的權(quán)重携狭,8080逛腿、8090的權(quán)重比為2:1,因此請(qǐng)求會(huì)根據(jù)權(quán)重比均攤到每臺(tái)機(jī)器碘举,也就是8080一次搁廓、8090兩次、8080一次…
九蝙场、控制腳本
win下的nginx汽摹,桌面文件(可忽略)
- run.bat文件
@echo off
rem 提供Windows下nginx的啟動(dòng)苦锨,重啟舟舒,關(guān)閉功能
echo ==================begin========================
cls
::ngxin 所在的盤符
set NGINX_PATH=C:
::nginx 所在目錄
set NGINX_DIR=C:\xxx\nginx-1.0.11\
color 0a
TITLE Nginx 管理程序增強(qiáng)版
CLS
echo.
echo. ** Nginx 管理程序 ***
echo. *** create 2020-10-15 ***
echo.
:MENU
echo. ***** nginx 進(jìn)程list ******
::tasklist|findstr /i "nginx.exe"
tasklist /fi "imagename eq nginx.exe"
echo.
if ERRORLEVEL 1 (
echo nginx.exe不存在
) else (
echo nginx.exe存在
)
echo.
::*************************************************************************************************************
echo.
echo. [1] 啟動(dòng)Nginx
echo. [2] 關(guān)閉Nginx
echo. [3] 重啟Nginx
echo. [4] 刷新控制臺(tái)
echo. [5] 重新加載Nginx配置文件
echo. [6] 檢查測(cè)試nginx配置文件
echo. [7] 查看nginx version
echo. [0] 退 出
echo.
echo.請(qǐng)輸入選擇的序號(hào):
set /p ID=
IF "%id%"=="1" GOTO start
IF "%id%"=="2" GOTO stop
IF "%id%"=="3" GOTO restart
IF "%id%"=="4" GOTO MENU
IF "%id%"=="5" GOTO reloadConf
IF "%id%"=="6" GOTO checkConf
IF "%id%"=="7" GOTO showVersion
IF "%id%"=="0" EXIT
PAUSE
::*************************************************************************************************************
::啟動(dòng)
:start
call :startNginx
GOTO MENU
::停止
:stop
call :shutdownNginx
GOTO MENU
::重啟
:restart
call :shutdownNginx
call :startNginx
GOTO MENU
::檢查測(cè)試配置文件
:checkConf
call :checkConfNginx
GOTO MENU
::重新加載Nginx配置文件
:reloadConf
call :checkConfNginx
call :reloadConfNginx
GOTO MENU
::顯示nginx版本
:showVersion
call :showVersionNginx
GOTO MENU
::*************************************************************************************
::底層
::*************************************************************************************
:shutdownNginx
echo.
echo.關(guān)閉Nginx......
taskkill /F /IM nginx.exe > nul
echo.OK,關(guān)閉所有nginx 進(jìn)程
goto :eof
:startNginx
echo.
echo.啟動(dòng)Nginx......
IF NOT EXIST "%NGINX_DIR%nginx.exe" (
echo "%NGINX_DIR%nginx.exe"不存在
goto :eof
)
%NGINX_PATH%
cd "%NGINX_DIR%"
IF EXIST "%NGINX_DIR%nginx.exe" (
echo "start '' nginx.exe"
start "" nginx.exe
)
echo.OK
goto :eof
:checkConfNginx
echo.
echo.檢查測(cè)試 nginx 配置文件......
IF NOT EXIST "%NGINX_DIR%nginx.exe" (
echo "%NGINX_DIR%nginx.exe"不存在
goto :eof
)
%NGINX_PATH%
cd "%NGINX_DIR%"
nginx -t -c conf/nginx.conf
goto :eof
::重新加載 nginx 配置文件
:reloadConfNginx
echo.
echo.重新加載 nginx 配置文件......
IF NOT EXIST "%NGINX_DIR%nginx.exe" (
echo "%NGINX_DIR%nginx.exe"不存在
goto :eof
)
%NGINX_PATH%
cd "%NGINX_DIR%"
nginx -s reload
goto :eof
::顯示nginx版本
:showVersionNginx
echo.
%NGINX_PATH%
cd "%NGINX_DIR%"
nginx -V
goto :eof
十氏仗、nginx.conf 配置文件注解
#user nobody;
worker_processes 1; #允許生成的進(jìn)程數(shù)夺鲜,默認(rèn)為1
#error_log logs/error.log; #制定日志路徑,級(jí)別
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #指定nginx進(jìn)程運(yùn)行文件存放地址
events {
worker_connections 1024; #最大連接數(shù)慷蠕,默認(rèn)為512
}
http {
include mime.types; #文件擴(kuò)展名與文件類型映射表
default_type application/octet-stream; #默認(rèn)文件類型
#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;
sendfile on; #允許sendfile方式傳輸文件
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; #連接超時(shí)時(shí)間
#gzip on;
server {
#keepalive_requests 120; #單連接請(qǐng)求上限次數(shù)流炕。
#listen 4545; #監(jiān)聽端口
#server_name 127.0.0.1; #監(jiān)聽地址
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#proxy_pass http://xxx; #請(qǐng)求代理到xxx 定義的服務(wù)器列表
#root path; #根目錄
#index vv.txt; #設(shè)置默認(rèn)頁
#deny 127.0.0.1; #拒絕的ip
#allow 172.18.5.54; #允許的ip
root /usr/local/web/bmAdmin/dist;
index index.html index.htm;
}
location /bmWeb {
alias /usr/local/web/bmWeb/dist;
index index.html index.htm;
}
#跨域反向代理
location /v1/ {
rewrite ^/v1/(.*)$ /$1 break;
proxy_pass https://su.bcebos.com/;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
上面是nginx的基本配置每辟,需要注意的有以下幾點(diǎn):
- $ remote_addr 與 $http_x_forwarded_for 用以記錄客戶端的ip地址渠欺;
- $ remote_user :用來記錄客戶端用戶名稱;
- $ time_local : 用來記錄訪問時(shí)間與時(shí)區(qū)讹开;
- $ request : 用來記錄請(qǐng)求的url與http協(xié)議捐名;
- $ status : 用來記錄請(qǐng)求狀態(tài);成功是200
- $ body_bytes_s ent :記錄發(fā)送給客戶端文件主體內(nèi)容大谐伤摇贺归;
- $ http_referer :用來記錄從那個(gè)頁面鏈接訪問過來的;
- $ http_user_agent :記錄客戶端瀏覽器的相關(guān)信息秋冰;
注:每個(gè)指令必須有分號(hào)結(jié)束婶熬;一個(gè)http中可以有多個(gè)server赵颅。