nginx 重定向/跨域/黑白名單/防盜鏈/SSL/動(dòng)靜分離/資源壓縮/負(fù)載均衡

轉(zhuǎn)載自linux安裝nginx(詳細(xì)), 略加整理

一袭艺、nginx重定向

  1. 重定向到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;
}

  1. 重定向到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_modulengx_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):

  1. $ remote_addr 與 $http_x_forwarded_for 用以記錄客戶端的ip地址渠欺;
  2. $ remote_user :用來記錄客戶端用戶名稱;
  3. $ time_local : 用來記錄訪問時(shí)間與時(shí)區(qū)讹开;
  4. $ request : 用來記錄請(qǐng)求的url與http協(xié)議捐名;
  5. $ status : 用來記錄請(qǐng)求狀態(tài);成功是200
  6. $ body_bytes_s ent :記錄發(fā)送給客戶端文件主體內(nèi)容大谐伤摇贺归;
  7. $ http_referer :用來記錄從那個(gè)頁面鏈接訪問過來的;
  8. $ http_user_agent :記錄客戶端瀏覽器的相關(guān)信息秋冰;

注:每個(gè)指令必須有分號(hào)結(jié)束婶熬;一個(gè)http中可以有多個(gè)server赵颅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捂刺,隨后出現(xiàn)的幾起案子募寨,更是在濱河造成了極大的恐慌,老刑警劉巖仪缸,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腹殿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡锣尉,警方通過查閱死者的電腦和手機(jī)自沧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爱谁,“玉大人孝偎,你說我怎么就攤上這事∷峦” “怎么了势决?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵果复,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我走搁,道長(zhǎng)极颓,這世上最難降的妖魔是什么群嗤? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任狂秘,我火速辦了婚禮,結(jié)果婚禮上破衔,老公的妹妹穿的比我還像新娘钱烟。我一直安慰自己嫡丙,他們只是感情好读第,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布怜瞒。 她就那樣靜靜地躺著,像睡著了一般惠窄。 火紅的嫁衣襯著肌膚如雪漾橙。 梳的紋絲不亂的頭發(fā)上霜运,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音介劫,去河邊找鬼案淋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛誉碴,可吹牛的內(nèi)容都是我干的瓣距。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼成黄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼奋岁!你這毒婦竟也來了荸百?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蓝翰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奇钞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漂坏,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顶别,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年驯绎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屈尼。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拴孤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鞭执,到底是詐尸還是另有隱情芒粹,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布估脆,位于F島的核電站疙赠,受9級(jí)特大地震影響疙教,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一裸弦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晕城,春花似錦窖贤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至览闰,卻和暖如春巷折,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晴弃。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工上鞠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芯丧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓谴咸,卻偏偏與公主長(zhǎng)得像骗露,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萧锉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容