主頁 >  其他 > Nginx基礎入門2

Nginx基礎入門2

2020-10-08 20:40:35 其他

一、Nginx部署-yum

1、官網鏈接

http://www.nginx.org

2、Nginx版本型別

Mainline version: 主線版,即開發版

Stable version: 最新穩定版,生產環境上建議使用的版本

Legacy versions: 遺留的老版本的穩定版

3、配置yum源

4、安裝

測驗:

二、nginx組態檔

這個在前面的文章里面已經介紹過,這里不再重復介紹,

三、nginx編譯引數

同上,

四、nginx基本引數

1、觀察主組態檔

① 分類

CoreModule 核心模塊(行程數等)

EventsModule 事件驅動模塊(作業模式等)

HttpCoreModule http內核模塊 (檔案程式型別,組態檔等)

② 模塊功能

1、全域/核心塊:配置影響nginx全域的指令,一般有運行nginx服務器的用戶組,nginx行程pid存放路徑,日志存放路徑,組態檔引入,允許生成worker process數等,
2、events塊:配置影響nginx服務器或與用戶的網路連接,有每個行程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網路連接序列化等,
3、http塊:可以嵌套多個server,配置代理,快取,日志定義等絕大多數功能和第三方模塊的配置,如檔案引入,mime-type定義,日志自定義,是否使用sendfile傳輸檔案,連接超時時間,單連接請求數等,
4、server塊:配置虛擬主機的相關引數,一個http中可以有多個server,
5、location塊:配置請求的路由,以及各種頁面的處理情況,

2、vim /etc/nginx/nginx.conf

user nginx;
運行nginx程式的獨立賬號
worker_processes 1;
啟動的worker行程數量(CPU數量一致或auto)
error_log /var/log/nginx/error.log warn;
錯誤日志存放位置
pid /var/run/nginx.pid;
events {
事件
use epoll;
事件驅動模型epoll【默認】
事件驅動模型分類,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 10240;
//每個worker行程允許處理的最大連接數,例如10240,65535
}
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;
優化引數
高效傳輸檔案的模式
Nginx高級篇sendfile配置
sendfile: 設定為on表示啟動高效傳輸檔案的模式,sendfile可以讓Nginx在傳輸檔案時直接在磁盤和tcp socket之間傳輸資料,如果這個引數不開啟,會先在用戶空間(Nginx行程空間)申請一個buffer,用read函式把資料從磁盤讀到cache,再從cache讀取到用戶空間的buffer,再用write函式把資料從用戶空間的buffer寫入到內核的buffer,最后到tcp socket,開啟這個引數后可以讓資料不用經過用戶buffer,
#tcp_nopush on;
優化引數
也就是說tcp_nopush = on 會設定呼叫tcp_cork方法,這個也是默認的,結果就是資料包不會馬上傳送出去,等到資料包最大時,一次性的傳輸出去,這樣有助于解決網路堵塞,
keepalive_timeout 65;
優化引數
長連接
#gzip on;
壓縮引數
include /etc/nginx/conf.d/*.conf;
包含子組態檔夾

3、觀察默認虛擬主機組態檔

vim /etc/nginx/conf.d/default.conf

vim /etc/nginx/conf.d/default.conf
server {
默認網站組態檔
listen 80;
監聽埠
server_name localhost;
FQDN
#charset koi8-r;
網頁字符型別
#access_log /var/log/nginx/host.access.log main;
日志
location / {
root /usr/share/nginx/html;
主目錄
index index.html index.htm;
默認主頁名
}
#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 /usr/share/nginx/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;
#}
}

4、啟動一個新的虛擬主機

① 啟動一個新的虛擬主機

vim /etc/nginx/conf.d/xuleilinux.conf 
server     {
listen    80;
server_name    xuleilinux.com;
location / {
root    /xuleilinux;
index     index.html ;
}
}

server 虛擬主機
listen 監聽埠
server_name 服務器名稱
location 網站目錄設定
root 網站主目錄在本地的路徑
index 主頁檔案名
http{} 是整個服務器,所有虛擬主機的設定,
server{}是某一個虛擬主機的設定
location{} 是某一個頁面的設定,

mkdir   /xuleilinux
echo   美男子   >  /xuleilinux/index.html
   

② 重啟服務

③ 域名決議和訪問

五、nginx日志log

1、日志配置

日志模塊

日志模塊的名稱:

ngx_http_log_module

相關的指令

log_format:日志格式

access_log:訪問日志

error_log:錯誤日志

open_log_file_cache:日志快取

ps:日志快取

open_log_file_cache max=N [inactive=time] [mim_uses=N] [valid=time] | off

該指令默認是禁止的,等同于:
open_log_file_cache off;

open_log_file_cache 指令的各項引數說明如下:
max: 設定快取中的最大檔案描述符數量,如果超過設定的最大檔案描述符數量,則采用 LRU (Least Recently Used) 演算法清除"較不常使用的檔案描述符", LRU (Least Recently Used) 算 法的基本概念是:當記憶體緩沖區剩余的可用空間不夠時,緩沖區盡可能地先保留使用者最常使用 的資料,將最近未使用的資料移出記憶體,騰出空間來加載另外的資料,

inactive: 設定一個時間,如果在設定的時間內沒有使用此檔案描述符,則自動洗掉此描述符, 此引數為可選引數,默認的時間為 10 秒鐘,

min_uses: 在引數 inactive 指定的時間范圍內,如果日志檔案超過被使用的次數,則將該日 志檔案的描述符記入快取,默認次數為 1,

valid: 設定多長時間檢查一次,看一看變數指定的日志檔案路徑與檔案名是否仍然存在,默 認時間為 60秒,
off: 禁止使用快取,

open_log_file_cache 指令的設定示例如下:
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m,

日志的格式和命令

log_format

Nginx有非常靈活的日志記錄模式,每個級別的配置可以有各自獨立的訪問日志,日志格式通過log_format命令定義,

語法

Syntax: log_format name [escape=default|json] string ...;
name 表示格式名稱
string 表示定義的格式

默認值

Default: log_format combined "...";
log_format 有默認的無需設定的combined日志格式,相當于apache的combined日志格式

環境
Context: http context

1、網站代理
LB:
例如代理服務器的日志格式就不同
如果Nginx位于負載均衡器,squid,nginx反向代理之后,web服務器無法直接獲取到客戶端真實的IP地址,
$remote_addr獲取的是反向代理的IP地址,反向代理服務器在轉發請求的http頭資訊中,可以增加X-Forwarded-For資訊,
用來記錄客戶端IP地址和客戶端請求的服務器地址,

nginx代理日志格式如下

log_format porxy '$http_x_forwarded_for - $remote_user [$time_local] '
' "$request" $status $body_bytes_sent '
' "$http_referer" "$http_user_agent" ';
2、全域和區域

定義設定位置

vim /etc/nginx/nginx.conf

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

日志格式允許包含的變數

$remote_addr 遠程地址,記錄客戶端ip地址

$remote_user 遠程用戶,記錄客戶端用戶名稱

[$time_local] 本地時間,服務器自身的時間

$request 請求,記錄請求的url和http協議 get/post

$ststus 狀態,記錄請求狀態 200/404/503/100/301

$body_bytes_sent 發送給客戶端的位元組數,不包括回應頭的大小

$http_referer 記錄從哪個頁面鏈接訪問過來的(超鏈接)

$http_user_agent 記錄客戶端瀏覽器相關資訊 火狐/ie

$http_x_forwarded_for 代理ip

old
$request_length
請求的長度(包括請求行,請求頭和請求正文),
$request_time
請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第一個位元組開始,直到把最后一個字符發送給客戶端后進行日志寫入為止,
$time_iso8601
ISO8601標準格式下的本地時間,
$bytes_sent
發送給客戶端的總位元組數 (可在主組態檔中,增加此項觀c)
$msec
日志寫入時間,單位為秒,精度是毫秒,

訪問日志和錯誤日志

access_log (日志)

某條日志記錄

192.168.100.254 - - [17/Dec/2017:14:45:59 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://192.168.100.10/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0" "-"

某條日志記錄含義

192.遠程主機IP
- - 用戶
【2017】時間
get獲得,下載,還有post提交,
/nginx-logo.png 下載圖片
http版本
狀態碼 什么結果,對,還是錯
368 大小
參考自哪個連接,主頁http://192.168.100.10/
Mozilla 5.0瀏覽器的版本
Windows NT 客戶端系統型別
-遠程客戶端主機地址 (請看注釋)

error_log (錯誤日志)

個性化404

1、修改主組態檔

server{

        error_page 404 /404.html;
            location = /404.html {
                root            /xuleilinux;
        }

}
systemctl restart nginx

2、創建錯誤反饋頁面

vim /nihaolinux/404.html

3 、訪問

訪問不存在的頁面

4、查看404日志

觀察404頁面的現象,

日志快取

大量訪問到來時,對于每一條日志記錄,都將是先打開檔案,再寫入日志,然后關閉.占用了系統的IO,與業務無關,可以使用open_log_file_cache來設,

Syntax:

open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m ;

max 1000 指的是日志檔案的FD,最大的快取數量為1000,超了怎么辦,看下面
min_users 3 20秒內小于3次訪問的FD,就給你清掉,結合inactive 20s 的時間,
valid 1m 檢查周期為1分鐘,
總結:快取最多1000個,到了極限,每分鐘開始清除掉 20秒內小于3次的檔案FD.

Default:

open_log_file_cache off;

Context:

http, server, locatition

http{} 將整個服務器所有網站,所有頁面的日志進行快取
server{} 將某一個網站的所有頁面日志,進行快取
location{}某一個頁面的日志,進行快取,

2、日志輪轉 切割

前言

Nginx安裝,會默認啟動日志輪轉,

  rpm  -ql nginx| grep log
        /etc/logrotate.d/nginx
        /var/log/nginx

輪轉陳述句

指令 /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

八、Nginx Web模塊

1、隨機主頁

random_index_module

目的:將主頁設定成隨機頁面,是一種微調更新機制,

啟動隨機主頁:

① 創建主頁目錄

mkdir /app

② 創建多個主頁

touch /app/{blue.html,green.html,red.html,.yellow.html}
//在不同的頁面書寫不同的內容,例子如下:
<html>
<head>
<title>green color</title>
</head>
<body style="background-color:green">
<h1>green color!</h1>
</body>
</html>
//想要改變不同的顏色,只需要把顏色的英文改成其他顏色的英文就可以,

③ 啟動隨機主頁

vim /etc/nginx/conf.d/default.conf 
server{

location / {
     #root   /usr/share/nginx/html;
     #index  index.html index.htm;
     root /app;
     random_index on;
}
}
 //在子組態檔里的默認檔案的server模塊的location里改成以上的配置,

記得重啟服務,重繪網站主頁,觀察變化,

完成該試驗后,請注釋掉該功能,避免影響其他實驗,隱藏檔案不會被隨機選取,

2、替換模塊

sub_mudule

目的:頁面內容替換,如果我們用模板生成網站的時候,因為疏漏或者別的原因造成代碼不如意,但是此時因為檔案數量巨大,不方便全部重新生成,那么這個時候我們就可以用此模塊來暫時實作糾錯,另一方面,我們也可以利用這個實作服務器端文字過濾的效果,

啟動替換

vim /etc/nginx/conf.d/deffault.conf  //啟動nginx默認頁面
server{    //在server下插入
sub_filter nginx 'my homepage';
sub_filter_once on;
location / {
root   /usr/share/nginx/html;
index  index.html index.htm;
}

ps:替換模塊,將nginx替換成my homepage單次替換開啟,

將單次替換關閉,再次重繪頁面,即可看見全文替換,

sub_filter_once off;

3、檔案讀取

ngx_http_croe_module

語法:

Syntax: sendfile on | off;
Default: sendfile on;
Context: http,server,location,if in location
Syntax: tcp_nopush on | off;
Default: tcp_nopush off;
Context: http,server,location
Syntax: tcp_nodelay on | off;
Default: tcp_nodelay on;
Context:http,server,location

三個部分的原理介紹

① senfile (發送檔案)

未使用senfile()的傳統網路傳輸的程序:

硬碟 >> kernel buffer >> user buffer>> kernel socket buffer >>協議堆疊

使用sendfile()來進行網路傳輸的程序:

硬碟 >> kernel buffer (快速拷貝到kernelsocket buffer) >>協議堆疊

ps:減少了一次copy的程序,sendfile()不但能減少切換次數而且還能減少拷貝次數,

② tcp_nopush

未使用tcp_nopush網路資源浪費:

應用程式每產生一次操作就會發送一個包,而典型情況下一個包會擁有一個位元組的資料以及40個位元組長的包頭,于是產生4000%的過載,很輕易地就能令網路發生擁塞,同時也浪費資源,

使用tcp_nopush網路傳輸速率提升:

當包累計到一定大小后再發送,

③ tcp_nodelay

開啟或關閉nginx使用TCP_NODELAY選項的功能, 這個選項僅在將連接轉變為長連接的時候才被啟用,
TCP_NODELAY是禁用Nagle演算法,即資料包立即發送出去,
由于Nagle和DelayedACK的原因,資料包的確認資訊需要積攢到兩個時才發送,長連接情況下,奇數包會造成延時40ms,所以tcp_nodelay會將ack立刻發出去, 如果不在長連接時,可以關閉此模塊,因為ack會被立刻發出去,

啟用模塊

location /video/ {
    sendfile        on;
    tcp_nopush  on;
}

默認啟動,無需驗證,

4、檔案壓縮

啟動該模塊,使檔案傳輸前進行壓縮,提升傳輸效率,

模塊

ngx_http_gzip_module

語法

 Syntax:     gzip on | off;
Default:     gzip off;
Context: http, server, location, if in location

Syntax:     gzip_comp_level level;
Default:     gzip_comp_level 1;(1~9)
Context: http, server, location

Syntax:     gzip_http_version 1.0 | 1.1;
Default:     gzip_http_version 1.1;
Context: http, server, location

啟用模塊

① 觀察未壓縮傳輸

拷貝圖片至網站主目錄

拷貝tar包至檔案主目錄

拷貝文本至檔案主目錄

通過瀏覽器下載檔案并觀察下載后大小,

② 啟用壓縮功能

 http { //在http標簽中啟動該功能
	gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; 
gzip_static on;
		gzip_static on;# nginx對于靜態檔案的處理模塊
	systemctl restart nginx

③ 觀察壓縮傳輸

注意快取

壓縮包和圖片類物件本身已經自帶壓縮功能,所以壓縮比例較小低,

文本類物件在壓縮試驗中,壓縮比例體現優越,

再通過瀏覽器下載檔案并觀察下載后大小,

5、頁面快取

模塊

ngx_http_headers_module

expires起到控制頁面快取的作用,合理的配置expires可以減少很多服務器的請求要配置expires,可以在http段中或者server段中或者location段中加入,

Nginx(expires快取減輕服務端壓力)

語法

Syntax: 	expires [modified] time;
                      expires  epoch | max | off;
Default: 	expires off;
Context: http, server, location, if in location

epoch:指定“expires”的值為1 January,1970,00:00:01 GMT

max:指定“expires”的值為10年

-1:指定“expires”的值為當前服務器時間-1s,即永遠過期,

off:不修改“expires”和“Cache-control”的值

原理介紹

無快取,每次訪問服務器,均是全文傳輸,開啟快取可以加速瀏覽網站,

啟用快取

① 觀察瀏覽器快取

開啟瀏覽器快取,瀏覽頁面,(默認)

第一次回傳狀態碼200,頁面物件全文傳輸

第二次回傳狀態304,頁面物件部分傳輸

禁用快取,瀏覽頁面

回傳碼200,全文傳輸

理解瀏覽器快取作用

決議快取原理

② 理解nginx服務器快取

開啟服務器快取模塊

vim /etc/nginx/nginx.conf
location / {
root /usr/share/nginx/html
index index.html index.htm;
expires 24h;
}

再次瀏覽頁面,觀察回應頭中出現服務器回復的快取時間

理解nginx服務器啟動快取時間,加速瀏覽,

缺點是時效性降低,

6、防盜鏈

模塊

ngx_http_referer_module

語法

Syntax: 	valid_referers none | blocked | server_names | string ...;
Default: 	—
Context: server, location

日志原理介紹

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

日志格式中的http_referer是記錄,訪問點參考的URL,也就是超鏈接的上一級地址,
通過這段地址,可以發現一種網路行為——盜鏈,非法盜鏈會影響站點的正常訪問,
通過http_referer模塊可以控制這一點,防止非法盜鏈現象,

啟用防盜鏈

① 搭建一個a.com網站

mkdir /a.com   //準備一個檔案夾
vim /etc/nginx/conf.d/a.com.conf //準備一個組態檔來指向這個檔案
server {
    listen 80;
    server_name a.com;
location / {
root /a.com
index index.html;
}
} //保存退出

vim /a.com/index.html
<img src='1.jpg' />
注意要將1.jpg圖片拷貝至網站主目錄,

在個人主機上做好域名決議,

② 搭建一個b.com網站

在主頁中盜鏈A網站的圖片

  vim index.html
    <img src='http://A網站的域名或者地址/1.jpg' />
        盜用鏈接
    注意網站主目錄中,根本沒有圖片, 

③ 訪問兩個網站頁面,均能正常顯示圖片,

④ 注意b網站的日志

日志正常

192.168.100.254 - - [20/Sep/2017:15:10:27 +0800] "GET / HTTP/1.1" 200 42 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0" "-"

⑤ 注意a網站的日志

日志不正常,日志莫名其妙的產生了,觀察referer欄位,發現被盜鏈了,

192.168.100.254 - - [20/Sep/2017:15:10:27 +0800] "GET /1.jpg HTTP/1.1" 200 1635350 "http://192.168.100.20/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0"

⑥ 啟動a.com防盜鏈功能

location / {
        root   /a.com;
        index  index.html index.htm;
     
        valid_referers none blocked *.a.com;
        if ($invalid_referer) {
            return 403;
        }
    }
重啟服務

⑦ 再次訪問b.com網站,盜鏈失敗,

⑧ 如果希望某些網站能夠使用(盜鏈)資源:


location ~* \.(gif|jpg|png|bmp)$ {
root /a.com
    valid_referers none blocked  *.qfcloud.top server_names ~tianyun ~\.google\. ~\.baidu\.;
    if ($invalid_referer) {
        return 403;
        #rewrite .* http://qfcloud.top/403.jpg;
    }
}
location / {
        root   /a.com;
        index  index.html index.htm;
     
        valid_referers none blocked *.a.com        server_name  192.168.100.*  ~tianyun ~\.google\. ~\.baidu\.   b.com;
        if ($invalid_referer) {
            return 403;
        }
    }

⑨ 再次盜鏈,訪問成功

九、nginx限制訪問

1、ngx_http_limit_req_module

啟動請求頻率限制

測驗未限制的情況下訪問

[root@localhost ~]# yum -y install httpd-tools
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
軟體包 httpd-tools-2.4.6-93.el7.centos.x86_64 已安裝并且是最新版本
無須任何處理
[root@localhost ~]# ab -n 100 -c 10 http://10.8.162.122/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 10.8.162.122 (be patient).....done


Server Software:        nginx/1.18.0
Server Hostname:        10.8.162.122
Server Port:            80

Document Path:          /
Document Length:        660 bytes

Concurrency Level:      10
Time taken for tests:   0.034 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      78200 bytes
HTML transferred:       66000 bytes
Requests per second:    2917.07 [#/sec] (mean)
Time per request:       3.428 [ms] (mean)
Time per request:       0.343 [ms] (mean, across all concurrent requests)
Transfer rate:          2227.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     1    3   1.0      3       5
Waiting:        1    3   0.9      3       4
Total:          1    3   1.1      3       5

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      3
  75%      4
  80%      5
  90%      5
  95%      5
  98%      5
  99%      5
 100%      5 (longest request)

啟動限制

vim /etc/nginx/nginx.conf
定義:
	  limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;  
	//限制請求  二進制地址  限制策略的名稱   占用10M空間  允許每秒1次請求
參考:
	 limit_req zone=req_zone;  
	//參考 限制策略的名稱
配置:
http {
    limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;     定義

    server {
        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
            limit_req zone=req_zone;  		參考
            #limit_req zone=req_zone burst=5;
            #limit_req zone=req_zone burst=5 nodelay; 
        }
    }
}

限制后 (重啟服務,并測驗)

[root@localhost ~]# ab -n 100 -c 10 http://10.8.162.122/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 10.8.162.122 (be patient).....done


Server Software:        nginx/1.18.0
Server Hostname:        10.8.162.122
Server Port:            80

Document Path:          /
Document Length:        660 bytes

Concurrency Level:      10
Time taken for tests:   0.066 seconds
Complete requests:      100
Failed requests:        99      //失敗的請求
   (Connect: 0, Receive: 0, Length: 99, Exceptions: 0)
Write errors:           0
Non-2xx responses:      99    //有問題的相應
Total transferred:      65231 bytes
HTML transferred:       50160 bytes
Requests per second:    1506.27 [#/sec] (mean)
Time per request:       6.639 [ms] (mean)
Time per request:       0.664 [ms] (mean, across all concurrent requests)
Transfer rate:          959.53 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       1
Processing:     1    6  14.3      1      49
Waiting:        1    6  14.3      1      49
Total:          1    6  14.4      2      49

Percentage of the requests served within a certain time (ms)
  50%      2
  66%      2
  75%      2
  80%      3
  90%     49
  95%     49
  98%     49
  99%     49
 100%     49 (longest request)

觀察錯誤日志

tail -f /var/log/nginx/error.log
2017/10/08 01:05:08 [error] 23287#23287: *720 limiting requests, excess: 5.109 by zone "req_zone", 
client: 27.216.240.201, server: localhost, request: "GET / HTTP/1.0", host: "tianyun.me"
	

 limiting requests
	由于限制請求導致,

十、Nginx訪問控制

1、基于主機(ip)

模塊

ngx_http_access_module

directives

allow 允許某些主機

deny 拒絕某些主機

syntax

Syntax: allow address | CIDR | unix: | all;
Context: http, server, location, limit_except

啟用控制

限制主機訪問

vim /etc/nginx/conf.d/default.conf
server {
  allow 10.18.45.65;
  allow 10.18.45.181;
  deny all;
}

測驗

服務器無法訪問

2、基于用戶

模塊

ngx_http_auth_basic_module

Syntax

方法一
Syntax: auth_basic string | off;
Context: http, server, location, limit_except

方法二
Syntax: auth_basic_user_file file;
Context: http, server, location, limit_except

啟用控制

① 建立認證檔案

yum install -y httpd-tools
	生成秘鑰的工具是由apache提供
htpasswd -cm /etc/nginx/conf.d/passwd user10
	會話密碼
htpasswd -m /etc/nginx/conf.d/passwd user20
	會話密碼
cat /etc/nginx/conf.d/passwd
	觀察口令檔案是否生成,已生成
	user10:$apr1$UE/tLtDM$nVm686kAMYb/ArqQDUi8U/
user20:$apr1$bmn0E/gK$enkXKb2V5uFvUy9wdIHlP.

② 啟動認證

vim /etc/nginx/conf.d/default.conf
    server {
	找到server{欄位,在下一行插入認證欄位,
            auth_basic "nginx access test!";
            auth_basic_user_file /etc/nginx/conf.d/passwd;
	提示訊息
參考認證檔案
...
}

③ 重啟并驗證

再次訪問網站,發現需要輸入用戶名和密碼,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/163425.html

標籤:其他

上一篇:一種簡單的PC遠程連接樹莓派圖形界面的方法

下一篇:[SHELL SCRIPT] LINUX正則運算式 課堂作業 獲取PM2.5天氣資訊

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more