Nginx的經常使用配置功能

資源的訪問控制php

1.用戶訪問驗證模塊css

    ngx_http_auth_basic_module模塊能夠實現讓訪問者,在訪問某些特定資源時,只有輸入正確的用戶密碼才容許訪問web內容html

    web上的一些內容不想被其餘人知道,可是又想讓部分人看到。nginx的http_auth模塊以及Apache http_auth都是很好的解決方案。nginx

語法:     auth_basic string | off;
默認值:     auth_basic off;
配置段:     http, server, location, limit_except
默認不開啓認證;後面若是跟上字符,這些字符會在驗證彈窗中顯示。

語法:     auth_basic_user_file file_path;
默認值:     —
配置段:     http, server, location, limit_except



  配置示例:web

    ①使用htpasswd(若是沒有請安裝httpd-tools軟件包)工具建立用戶驗證文件正則表達式

[root@localhost /]# htpasswd -c -m /etc/nginx/.passwd ceshi
New password: 
Re-type new password: 
Adding password for user ceshi

    ②在須要驗證的虛擬主機配置文件中配置location,添加auth_basic驗證規則vim

[root@localhost /]# vim /etc/nginx/conf.d/static.conf 
server {
        listen 80;
        server_name www.aa5.com;
        access_log /var/log/nginx/accecc.log proxy;
        location / {
        root /web/;
        }
        error_page 404 /notfound/notfound.html;
        location =/notfound/notfound.html {
        root /web/;
        }

        location ^~ /admin/ {
        root /web/;
        auth_basic "please input your password!!!";
        auth_basic_user_file /etc/nginx/.passwd;
        }
}
[root@localhost /]# nginx -s reload

    ③客戶端訪問指定目錄提示用戶驗證才能夠訪問
後端

$0[A${PBT46BT}~MV{}S$]2.png

2.來源ip訪問控制
瀏覽器

    使用ngx_http_access_module模塊來實現基於ip的訪問控制功能緩存

    能夠應用的字段有http、location、server

    示例:

        location / {
        deny 192.168.2.162;            ##拒絕指定ip訪問
        allow all;                     ##容許全部人訪問
        deny 192.168.1.0/24;           ##拒絕指定網段訪問
        }



Nginx的URL重寫(rewrite)

rewrite的組要功能是實現RUL地址的重定向,URL重寫有利於網站首選域的肯定,對於同一資源頁面多條路徑的301重定向有助於URL權重的集中默認參數編譯nginx就會支持rewrite的模塊

rewrite語法格式及參數語法說明以下: 

將用戶請求的URI基於regex所描述的模式進行檢查,匹配到時將其替換爲replacement指定的新的URI

注意:若是在同一級配置塊中存在多個rewrite規則,那麼會自下而下逐個檢查;被某條件規則替換完成後,會從新一輪的替換檢查,所以,隱含有循環機制;[flag]所表示的標誌位用於控制此循環機制

    rewrite    <regex>    <replacement>    [flag];
    關鍵字      正則        替代內容          flag標記
 
    關鍵字:其中關鍵字error_log不能改變
    正則:perl兼容正則表達式語句進行規則匹配
    替代內容:將正則匹配的內容替換成replacement
    flag標記:rewrite支持的flag標記
 
flag標記說明:
last  #重寫完成後中止對當前URI在當前location中後續的其它重寫操做,然後對新的URI啓動新一輪重寫檢查;提早重啓新一輪循環
break  #本條規則匹配完成即終止,再也不匹配後面的任何規則
redirect  #返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址;不能以http://或https://開頭
permanent  #返回301永久重定向,瀏覽器地址欄會顯示跳轉後的URL地址

語法示例:

rewrite ^/(.*) https://www.nnv5.cn/$1 permanent;            ##將訪問http站點的全部url永久重寫到https的站點下
rewrite ^/(.*).png /$1.jpg permanent;                       ##將訪問.png結尾的url重寫爲.jpg
rewrite ^/ https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558164084618&di=6bf7732ebfd157b56f786931ccf20df2&imgtype=0&src=http%3A%2F%2Fpic.58pic.com%2F58pic%2F13%2F81%2F71%2F46K58PICXQ9_1024.jpg;

rewrite爲固定關鍵字,表示開始進行rewrite匹配規

regex部分是 ^/(.*) ,這是一個正則表達式,匹配完整的域名和後面的路徑地址

replacement部分是https://www.nnv5.cn/$1 ,$1是取自regex部分()裏的內容。匹配成功後跳轉到的URL

flag部分 permanent表示永久301重定向標記,即跳轉到新的 https://www.nnv5.cn/$1 地址上

配置示例:

①編輯虛擬主機配置文件添加訪問本站點全部.jpg文件時都重寫爲.html

[root@localhost web]# vim /etc/nginx/conf.d/static.conf 
server {
        listen 80;
        server_name www.aa5.com;
        access_log /var/log/nginx/accecc.log proxy;
        root /web;
        
        rewrite ^/(.*).jpg /$1.html;

        location / {
        root /web/;
        }
}
[root@localhost web]# vim /web/aaa.html 
aaa.html

②客戶端使用瀏覽器訪問www.aa5.com/aaa.jpg測試驗證,會直接訪問到網站根目錄下的aaa.html文件

)JQZD$4KEJKZ[RJYKFZ6MDO.png




Nginx防盜鏈設置

網站防盜鏈,就是防止別人經過某些技術手段繞過本站的資源展現頁面,盜用本站的資源;設置防盜鏈,就是讓繞開本站資源展現頁面的資源連接失效。簡單地說就是防止本身網站上的資源(如圖片、文檔、音頻、視頻等資源)被其餘用戶採用其餘的技術手段訪問或下載。

當本身網站資源被盜鏈後,即便本身的網站流量並不大,也會加大網站服務器的負擔,由於別人不是從你的網站下載資源,但耗費的倒是你的服務器帶寬等資源。總之,網站被盜鏈後對自身的影響仍是很是大的。

而防盜鏈技術就是爲了很好解決盜鏈這一問題的。防盜鏈技術的原理很簡單,http標準協議中有專門的字段記錄referer,既能夠追溯上一個入站地址是什麼,同時對於資源文件,能夠跟蹤到包含顯示他的網頁地址是什麼,全部的防盜鏈方法都是基於這個Referer字段。

配置示例:

前提是要在nginx編譯好以後在server字段中添加

location ~*\.(jpg|jpeg|png|gif|)$ {                        ##定義要防盜的資源類型
valid_referers none blocked *.aa2.com *.baidu.com *.google.com;        ##指定能夠訪問資源的域名或者ip
if ($invalid_referer) {
        #return 403;                                        ##若是不是上面定義的域名或ip訪問資源則返回403錯誤
        rewrite /.* https://ss0.bdstatic.com/jcuanBn.jpg;    ##若是不是信任的域名或ip訪問則將請求重寫到這個地址
                }
}




Nginx的反向代理配置

經常使用配置參數

    location / {
        index index.jsp;
        proxy_pass   http://hello;    #在這裏設置一個代理,和upstream的名字同樣        #如下是一些反向代理的配置可刪除
        proxy_redirect             off; 
        #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP
        proxy_set_header           Host $host; 
        proxy_set_header           X-Real-IP $remote_addr; 
        proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 
        client_max_body_size       10m; #容許客戶端請求的最大單文件字節數
        client_body_buffer_size    128k; #緩衝區代理緩衝用戶端請求的最大字節數
        proxy_connect_timeout      300; #nginx跟後端服務器鏈接超時時間(代理鏈接超時)
        proxy_send_timeout         300; #後端服務器數據回傳時間(代理髮送超時)
        proxy_read_timeout         300; #鏈接成功後,後端服務器響應時間(代理接收超時)
        proxy_buffer_size          4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
        proxy_buffers              4 32k; #proxy_buffers緩衝區,網頁平均在32k如下的話,這樣設置
        proxy_busy_buffers_size    64k; #高負荷下緩衝大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
    }

Nginx隱藏版本號

別人能夠經過查看你使用的nginx版本號找漏洞,來***你

配置示例:

在http中添加該配置:
http {
server_tokens off;
}

Nginx動靜分離

思路:動、靜態的文件,請求時匹配不一樣的目錄或不一樣的服務器

server {
        listen 80;
        server_name www.aa1.com www.test.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location ~* \.(png|jpg|jpeg|html|htm|js|css|xml|gif)$ {
                proxy_pass http://static;
        }

        location / {
                proxy_pass http://dong;
        }
}
相關文章
相關標籤/搜索