Nginx網絡服務三-----(三方模塊和內置變量)

1.驗證模塊 需要輸入用戶名和密碼

我們要用htpasswd這個命令,先安裝一下httpd

生成文件和用戶?

修改文件?

訪問頁面?

?為什么找不到頁面?

對應的路徑下,沒有這個文件

去創建文件

去虛擬機瀏覽器查看

有的頁面不想被別人看到,可以做這個操作

2.網頁的狀態頁

基于nginx 模塊 ngx_http_stub_status_module 實現,在編譯安裝nginx的時候需要添加編譯參數 --with-http_stub_status_module,否則配置完成之后監測會是提示語法錯誤注意: 狀態頁顯示的是整個服務器的狀態,而非虛擬主機的狀態

文件中加入內容?

瀏覽器看結果

#狀態頁用于輸出nginx的基本狀態信息

Active connections:?
#當前處于活動狀態的客戶端連接數,包括連接等待空閑連接數=reading+writing+waiting
?

accepts:
#統計總值,Nginx自啟動后已經接受的客戶端請求的總數。

handled:
#統計總值,Nginx自啟動后已經處理完成的客戶端請求總數,通常等于accepts,除非有因worker_connections限制等被拒絕的連接

requests:
#統計總值,Nginx自啟動后客戶端發來的總的請求數。


Reading:
#當前狀態,正在讀取客戶端請求報文首部的連接的連接數,數值越大,說明排隊現象嚴重,性能不足


Writing:

#當前狀態,正在向客戶端發送響應報文過程中的連接數,數值越大,說明訪問量很大

Waiting:
#當前狀態,正在等待客戶端發出請求的空閑連接數,開啟 keep-alive的情況下,這個值等于active – (reading+writing)

提取內容

這樣別人也可以看到,這個給它加個身份驗證

加了身份驗證,看不懂怎么辦

如果你想更安全

3.自定義 錯誤頁面

自定義一個頁面

更換狀態碼

為什么要更換狀態碼?

因為404狀態碼出現時,可能會被劫持,為了不被劫持,我們可以更換狀態碼

4.檢測文件是否存在

當訪問的頁面存在時,那就去訪問這個頁面,不會顯示about?

5.日志位置存放

#格式
Syntax: error_log file [level];
error_log ? ?/apps/nginx/logs/kgc_error.log;
固定格式 ? ? ?文件路徑 ? ? ? ? ? ? ? ? ? ? ? ? 級別(info ?debug等 ?可以忽略不寫)
? ? ??


Default:?
error_log logs/error.log error;
Context: main, http, mail, stream, server, location
level: debug, info, notice, warn, error, crit, alert, emerg

[root@centos7 ~]# mkdir /data/nginx/logs
?listen 80;
?server_name www.kgc.org;
?error_page ?500 502 503 504 404 /error.html;?
?access_log /apps/nginx/logs/kgc_access.log;?
?error_log /apps/nginx/logs/kgc_error.log;?
?#定義錯誤日志文件


#重啟nginx并訪問不存在的頁面進行測試并驗證是在指定目錄生成新的日志文件


[root@localhost ~]#mkdir /apps/nginx/logs
[root@localhost ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost ~]#nginx -s reload

錯誤日志實驗?

將兩個網站的 日志分離

[root@localhost error]#vim /apps/nginx/conf.d/m.conf
server{
? ? ? ? listen 80;
? ? ? ? server_name ?www.m.com;
? ? ? ? root /data/nginx/m/;
? ? ? ? error_log ? ?/data/logs/m_error.log;
? ? ? ? access_log ?/data/logs/m_access.log;
}


[root@localhost error]#vim /apps/nginx/conf.d/pc.conf
server{
? ? ? ? listen 80;
? ? ? ? server_name ?www.pc.com;
? ? ? ? root /data/nginx/pc;
? ? ? ? error_log ? ?/data/logs/pc_error.log;
? ? ? ? access_log ?/data/logs/pc_access.log;
}
[root@localhost error]#mkdir /data/logs
[root@localhost error]#nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
[root@localhost error]#nginx -s reload

查看日志是否生效

6.長連接

keepalive_timeout timeout [header_timeout]; ?
#設定保持連接超時時長,0表示禁止長連接,默認為75s,通常配置在http字段作為站點全局配置


keepalive_requests number; ?
#在一次長連接上所允許請求的資源的最大數量,默認為100次,建議適當調大,比如:500
可以加在全局或者 server?

keepalive_requests 3;
#最大下載三個資源就會斷開


keepalive_timeout 60 65; ? #只能有一個空格?
#開啟長連接后,返回客戶端的會話保持時間為60s,單次長連接累計請求達到指定次數請求或65秒就會被斷開,后面的60為發送給客戶端應答報文頭部中顯示的超時時間設置為60s:如不設置客戶端將不顯示超時時間。


Keep-Alive:timeout=60 ?#瀏覽器收到的服務器返回的報文
#如果設置為0表示關閉會話保持功能,將如下顯示:


Connection:close ?#瀏覽器收到的服務器返回的報文
#使用命令測試:


[root@centos8 ~]# telnet www.kgc.org 80
Trying 10.0.0.8...
Connected to www.kgc.org.
Escape character is '^]'.
GET / HTTP/1.1
HOST: www.kgc.org

#Response Headers(響應頭信息):
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Thu, 24 Sep 2020 04:35:35 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Sep 2020 14:39:21 GMT
Connection: keep-alive
Keep-Alive: timeout=60
ETag: "5c8a6b3a-7"
Accept-Ranges: bytes


#頁面內容
pc web

7.作為下載服務器配置

ngx_http_autoindex_module 模塊處理以斜杠字符 "/" 結尾的請求,并生成目錄列表,可以做為下載服務

配置使用

官方文檔:

Module ngx_http_autoindex_module

給文件內容加單位大小

autoindex on | off;
#自動文件索引功能,默為off


autoindex_exact_size on | off; ?
#計算文件確切大小(單位bytes),off 顯示大概大小(單位K、M),默認on


autoindex_localtime on | off ;?
#顯示本機時間而非GMT(格林威治)時間,默認off


autoindex_format html | xml | json | jsonp;?
#顯示索引的頁面文件風格,默認html


limit_rate rate;?
#限制響應客戶端傳輸速率(除GET和HEAD以外的所有方法),單位B/s,即bytes/second,默認值0,表示無限制,此指令由ngx_http_core_module提供


set $limit_rate
#變量提供 限制 ? 變量優先級高

改為json格式

8.用戶上傳資料

上傳需要借助開發小的程序, 并且程序 5M 和 nginx 10M 都會限制。 兩者取最小

client_max_body_size 1m;?
#設置允許客戶端上傳單個文件的最大值,默認值為1m,上傳文件超過此值會出413錯誤


client_body_buffer_size size;?
#用于接收每個客戶端請求報文的body部分的緩沖區大小;默認16k;超出此大小時,其將被暫存到磁盤上的由下面client_body_temp_path指令所定義的位置


client_body_temp_path path [level1 [level2 [level3]]];
#設定存儲客戶端請求報文的body部分的臨時存儲路徑及子目錄結構和數量,目錄名為16進制的數字,使用hash之后的值從后往前截取1位、2位、2位作為目錄名

上傳文件大于限制 ?錯誤代碼413

9.其他設置

directio size | off;
#操作完全和aio相反,aio是讀取文件而directio是寫文件到磁盤,啟用直接I/O,默認為關閉,當文件大于等于給定大小時,例如:directio 4m;同步(直接)寫磁盤,而非寫緩存。

直接 寫入 磁盤 ? ? 還是等待一定數據量寫入磁盤

open_file_cache off; ?#是否緩存打開過的文件信息
open_file_cache max=N [inactive=time];
#nginx可以緩存以下三種信息:
(1) 文件元數據:文件的描述符、文件大小和最近一次的修改時間
(2) 打開的目錄結構
(3) 沒有找到的或者沒有權限訪問的文件的相關信息?
max=N:#可緩存的緩存項上限數量;達到上限后會使用LRU(Least recently used,最近最少使用)算法實現管理
inactive=time:#緩存項的非活動時長,在此處指定的時長內未被命中的或命中的次數少于

open_file_cache_min_uses ? ?
#指令所指定的次數的緩存項即為非活動項,將被刪除?
open_file_cache_valid time;?
#緩存項有效性的檢查驗證頻率,默認值為60s?
open_file_cache_errors on | off;?
#是否緩存查找時發生錯誤的文件一類的信息,默認值為off
open_file_cache_min_uses number;?
#open_file_cache指令的inactive參數指定的時長內,至少被命中此處指定的次數方可被歸類為活動項,默認值為1

范例:
open_file_cache max=10000 inactive=60s;?
#最大緩存10000個文件,非活動數據超時時長60s
open_file_cache_valid ??60s; ?
#每間隔60s檢查一下緩存數據有效性
open_file_cache_min_uses 5;?
#60秒內至少被命中訪問5次才被標記為活動數據
open_file_cache_errors ??on;
#緩存錯誤信息

limit_except method ... { ... },僅用于location
#限制客戶端使用除了指定的請求方法之外的其它方法?
method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND,?
PROPPATCH, LOCK, UNLOCK, PATCH
limit_except GET {
?allow 192.168.91.101;
?deny all;
}

#除了GET和HEAD 之外其它方法僅允許192.168.1.0/24網段主機使用

10.第三方模塊(echo模塊)

開源的echo模塊 https://github.com/openresty/echo-nginx-module

安裝第三方命令?

看一下,make install會不會覆蓋之前的?

curl訪問

11.變量

變量分為:內置變量和 自定義變量

http://nginx.org/en/docs/varindex.html
官方文檔

11.1內置變量

$remote_addr;?

#存放了客戶端的地址,注意是客戶端的公網IP


$proxy_add_x_forwarded_for;(傳地址)?

$proxy_add_x_forwarded_for
#此變量表示將客戶端IP追加請求報文中X-Forwarded-For首部字段,多個IP之間用逗號分隔,如果請求中沒有X-Forwarded-For,就使用$remote_addrthe “X-Forwarded-For” client request header field with the $remote_addr variable appended to it, separated by a comma. If the “X-Forwarded-For” field is not present in the client request header, the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.
客戶機 ? ?代理1 ? ? 代理2 ? ? nginx服務器
$proxy_add_x_forwarded_for: 在代理1 上存的是 ?客戶機的ip
$proxy_add_x_forwarded_for: 在代理2 上存的是 ?客戶機的ip,代理1的ip ? ? ? ? ? ?用逗號隔開
$proxy_add_x_forwarded_for: nginx ?上存的是 ?客戶機的ip,代理1的ip,代理2的ip

$args;(存放URL的參數)

$args;?
#變量中存放了URL中的參數,例如:http://www.kgc.org/main/index.do?id=20190221&partner=search
#返回結果為: id=20190221&partner=search ? ?存放的就是這個

select ? * ?from table ?where id=20190221

$document_root;

指明了主站點目錄的位置


#保存了針對當前資源的請求的系統根目錄,例如:/apps/nginx/html?

$document_uri;

不包含參數的URL


#保存了當前請求中不包含參數的URI,注意是不包含請求的指令

比如:http://www.kgc.org/main/index.do?id=20190221&partner=search會被定義為/main/index.do?
#返回結果為:/main/index.do

$host;

服務器的主機地址(名字)

$limit_rate;

限速(網路速率)

#如果nginx服務器使用limit_rate配置了顯示網絡速率,則會顯示,如果沒有設置, 則顯示0

$remote_port;

客戶端的請求端口

#客戶端請求Nginx服務器時隨機打開的端口,這是每個客戶端自己的端口

$remote_user;

經過 htpasswd驗證的用戶名

#已經經過Auth Basic Module驗證的用戶名

$request_method;?

請求資源的方式,GET/PUT/DELETE等

$request_filename;?

表示系統的真實路徑

#當前請求的資源文件的磁盤路徑,由root或alias指令與URI請求生成的文件絕對路徑,如:/apps/nginx/html/main/index.html

$request_uri;?

包含請求參數的原始URI,不包含主機名

相當于:$document_uri?$args

$scheme;

請求的協議

例如:http,https,ftp等

$server_protocol;?

你使用的協議的版本

#保存了客戶端請求資源使用的協議的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等

$server_addr;?

服務器的IP地址

$server_name;?

請求的服務器的主機名

?$server_port;?

請求的服務器的端口號

例如:https(端口號443)? ? ? http(端口號80)

$http_user_agent;

客戶端瀏覽器的詳細信息

$http_cookie;?

客戶端的緩存信息

緩存:cookie和session

?例子:

11.2自定義變量

11.2.1 set指令

假如需要自定義變量名稱和值,使用指令set $variable value;

語法格式:

Syntax: set $variable value;
Default: —
Context: server, location, if

set這個指令

只能放在 server,location,if 下面?

12.自定義圖標

favicon.ico 文件是瀏覽器收藏網址時顯示的圖標,當客戶端使用瀏覽器問頁面時,瀏覽器會自己主動發起請求獲取頁面的favicon.ico文件,但是當瀏覽器請求的favicon.ico文件不存在時,服務器會記錄404日志,而且瀏覽器也會顯示404報錯

【定制小圖標】
wget www.baidu.com/favicon.ico


放到主目錄就可以了

不生效可以重新打開瀏覽器

12.1 百度圖標?

復制一份到主目錄下

瀏覽器訪問地址,看圖標

12.2 京東圖標

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696801.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696801.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696801.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【UI自動化】使用poco框架進行元素唯一定位

直接選擇: 1.poco(text買入).click() 2.poco("android.widget.ImageView").click()相對選擇、空間選擇: 3.poco(text/name).parent().child()[0].click()正則表達式: 4.listpoco(textMatches".*ETF")今天主要想記錄下…

centos 系統盤 放到 win pc 中的異常解決

有一塊 2.5 480g sata ssd,之前是筆記本電腦的centos系統盤,后來沒用了,打算掛到臺式機上當下載盤。臺式機pc的主板是華碩 h610m-a。 難點一: 因為臺式pc上已經掛了兩塊3.5 hdd,發現sata的電源線都在3.5hdd附近&#…

利用RBI(Remote Browser Isolation)技術訪問ChatGPT

系統組網圖 #mermaid-svg-Bza2puvd8MudMbqR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Bza2puvd8MudMbqR .error-icon{fill:#552222;}#mermaid-svg-Bza2puvd8MudMbqR .error-text{fill:#552222;stroke:#552222;…

300分鐘吃透分布式緩存-10講:MC是怎么定位key的?

我們在進行 Mc 架構剖析時,除了學習 Mc 的系統架構、網絡模型、狀態機外,還對 Mc 的 slab 分配、Hashtable、LRU 有了簡單的了解。本節課,將進一步深入學習這些知識點。 接下來,進入 Memcached 進階的學習。會講解 Mc 是如何進行…

QT應用軟件【協議篇】周立功CAN接口卡代碼示例

文章目錄 USBCAN系列CAN接口卡規格參數資料下載QT引用周立功的庫安裝sdk代碼USBCAN系列CAN接口卡 USBCAN系列CAN接口卡兼容USB2.0全速規范,可支持1/2/4/8路CAN接口。采用該接口卡,PC機可通過USB連入CAN網絡,進行CAN總線數據采集和處理,主要具備以下幾大優勢特點: 支持車載…

正交匹配追蹤(Orthogonal Matching Pursuit, OMP)的MATLAB實現

壓縮感知(Compressed Sensing, CS)是一種利用稀疏信號的先驗知識,用遠少于奈奎斯特采樣定理要求的樣本數目恢復整個信號的技術。正交匹配追蹤(Orthogonal Matching Pursuit, OMP)是一種常見的貪婪算法(Gree…

【CF】團隊訓練賽2 J-Palindrome Reversion 題解

傳送門:Palindrome Reversion 標簽:字符串 題目大意 規定一個操作:選擇字符串中的一段區間[l,r]并使其翻轉。現在給出一個字符串s,你要判斷能否通過一次操作使其變為回文串。 輸入:一個字符串,其長度不超…

在蘋果電腦MAC上安裝Windows10(雙系統安裝的詳細圖文步驟教程)

在蘋果電腦MAC上安裝Windows10(雙系統安裝的詳細圖文步驟教程) 一、準備工作準備項1:U盤作為系統安裝盤準備項2:您需要安裝的系統鏡像 二、啟動轉換助理步驟1:找到啟動轉換助理步驟2:啟動轉換助理步驟3&…

波奇學Linux:進程通信管道

進程通信 管道:基于文件級別的單向通信 創建父子進程,使得進程的struct file*fd_array[]的文件描述符指向同一個struct file文件,這個文件是內存級文件。 父進程關寫端,子進程再關閉讀端。實現單向通信 子進程寫入,父進…

Java面向對象(三)

一、封裝: 一般意義的封裝:把一段重復代碼抽取成一個函數,稱為代碼的封裝(包裝)面向對象語言的封裝:將類的某些信息隱藏在類的內部(通過使用不同的訪問權限修飾符),不許…

C++ Primer 筆記(總結,摘要,概括)——第3章 字符串、向量和數組

目錄 3.1 命名空間的using聲明 3.2 標準庫類型string 3.2.1 定義和初始化string對象 3.2.2 string對象上的操作 3.2.3 處理string對象中的字符 3.3 標準庫類型vector 3.3.1 定義和初始化vector對象 3.3.2 向vector對象中添加元素 3.3.3 其他vector操作 3.4 迭代器介紹 3.4.…

如何使用rocketmq實現分布式事務?

什么是rocketmq事務消息 事務消息是 Apache RocketMQ 提供的一種高級消息類型,支持在分布式場景下保障消息生產和本地事務的最終一致性。 RocketMQ的分布式事務又稱為“半消息事務”。 事務消息處理流程 RocketMQ是靠半消息機制實現分布式事務 事務消息&#x…

Spring之AOP源碼解析(上)

Aop相關注解 EnableTransactionManagementEnableAspectJAutoProxyEnableAsync... 從注解切入來看看這些注解都干了什么 Import注解作用簡述 注入的類一般繼承ImportSelector或者ImportBeanDefinitionRegistrar接口 繼承ImportSelector接口:selectImports方法返回…

pandas/geopandas 筆記:判斷地點在不在路網上 不在路網的點和路網的距離

0 導入庫 import osimport pandas as pd pd.set_option(display.max_rows,5)import osmnx as oximport geopandas as gpd from shapely.geometry import Point 1 讀取數據 假設我們有 如下的數據: 1.1 新加坡室外基站位置數據 cell_stationpd.read_csv(outdoor…

TSINGSEE青犀AI智能分析網關V4初始配置與算法相關配置介紹

TSINGSEE青犀AI智能分析網關V4內置了近40種AI算法模型,支持對接入的視頻圖像進行人、車、物、行為等實時檢測分析,上報識別結果,并能進行語音告警播放。硬件管理平臺支持RTSP、GB28181協議、以及廠家私有協議接入,可兼容市面上常見…

通過例子學習golang的Goroutine

Go 語言中的 Goroutine 是一種輕量級的并發執行單位。它可以與其他 Goroutine 并發地執行,而不需要顯式地管理線程的創建和銷毀。Goroutine 是 Go 語言并發模型的核心組成部分,它使得編寫并發程序變得更加簡單和高效。 例一 創建兩個function&#xff0…

linux下ffmpeg調用GPU硬件解碼(VDPAU/VAAPI)保存文件

本文講解在linux下面,如何通過ffmpeg調用GPU硬件解碼,并保存解碼完的yuv文件。 其實,ffmpeg自帶的例子hw_decode.c這個文件,就已經能滿足要求了,因此,本文就嘗試講解以下hw_decode這個例子。hw_decode.c可以…

watchpoint

前言 內存被踩,通過 watchpoint 找到真兇 實例 以 smsc911x 網卡驅動為基體,進行實驗,和網卡本身功能無關, 每執行一次 ifconfig eth0 up,就會調用一次 smsc911x_open(),我在這里設計了一段代碼&#xf…

數學知識(四)(容斥原理、博弈論)

一、容斥原理 容斥原理公式 一共加或者減的式子個數 (一)利用容斥原理解決求能被質數整除的數的個數 890計算能被整除的數的個數 因為一共有2^n-1種選法,可以用位運算的方式枚舉,對于得到的每一種選法,根據存在的數…

六、回歸與聚類算法 - 邏輯回歸與二分類

線性回歸欠擬合與過擬合線性回歸的改進 - 嶺回歸分類算法:邏輯回歸模型保存與加載無監督學習:K-means算法 1、應用場景 2、原理 2.1 輸入 2.2 激活函數 3、損失以及優化 3.1 損失 3.2 優化 4、邏輯回歸API 5、分類的評估方法 5.1 精確率和召回率 5.2…