日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php的server和location,3、Nginx关于server块和location块的配置

發(fā)布時間:2025/4/5 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php的server和location,3、Nginx关于server块和location块的配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前面第2篇文章中列出了全局段、events段、http段的一些指令的意義和用法,這篇文章將介紹server段和location段的相關(guān)指令。

server段配置

listen:

listen指令有三種配置方法:

1、listen address[:port] [ default_server ]? [ ssl ];

2、listen port [ default_server ]? [ ssl ];

3、listen unix:path [ default_server ]? [ ssl ];

使用示例:

listen *:80 | *:8000; ? ###監(jiān)聽所有80和8000端口

listen 192.168.1.10;###監(jiān)聽具體IP的所有端口上的連接

listen 8000;###監(jiān)聽具體端口上的所有IP連接,等同于listen ?*:8000;

server_name:

語法:server_name ?name...;

設(shè)置虛擬主機(jī)名稱。可以設(shè)置多個name,例如:

server_name ?myserver.com www.myserver.com;

name中可以使用通配符*,但是通配符只能用在由三段字符串組成的名稱的首段或尾段,或者由兩段字符串組成的名稱的尾段。例如:

server_name ? *.myserver.com ?www.myserver.*;

name中還可以使用正則表達(dá)式,并使用波浪號“~”作為正則表達(dá)式字符串的開始標(biāo)記。例如:

server_name ? ~^www\d+\.myserver\.com$;

表示以匹配www開頭,后面緊跟一個或者多個數(shù)字,后面是myserver,并且以com結(jié)尾的name

由于server_name指令支持通配符和正則表達(dá)式兩種配置名稱的方式,因此在包含有多個虛擬主機(jī)的配置文件中,可能會出現(xiàn)一個名稱被多個虛擬主機(jī)的server_name匹配成功,那么來自這個名稱的請求到底被哪個虛擬主機(jī)處理呢?Nginx會根據(jù)以下優(yōu)先級來選擇虛擬主機(jī)響應(yīng)用戶端的請求:

1、準(zhǔn)確匹配server_name

2、通配符開開始時匹配server_name成功

3、通配符在結(jié)尾時匹配server_name成功

4、正則表達(dá)式匹配server_name成功

5、如果server_name被同一優(yōu)先級的匹配方式匹配到,則誰先匹配到誰負(fù)責(zé)響應(yīng)。

root:

語法:root ?path;

指定根目錄路徑。

示例:

location ?/data/ {

root ?/wwwroot/html;

}

當(dāng)location接收到“/data/index.html”的訪問請求時,會在/wwwroot/html/data/目錄下找到index.html來響應(yīng)用戶請求。

index:

設(shè)置默認(rèn)首頁,一般有兩個作用,一是,用戶在發(fā)出請求訪問網(wǎng)站時,請求地址可以不寫首頁名稱,二是,可以對一個請求,根據(jù)其請求的內(nèi)容而設(shè)置不用的首頁,該指令的語法結(jié)構(gòu)為:

index ?file ...;

示例:server?{

listen?80;

server_name?test;

error_log?/etc/nginx/conf.d/error.log;

root?/wwwroot/html;

index?c.html;

location?/t/?{

root?/wwwroot/html;

index?a.html;

}

}

error_page:

設(shè)置網(wǎng)站的錯誤頁面,語法為:

error_page ?code ... [=[response]]uri;

code:要處理的HTTP錯誤代碼

response:將code指定的錯誤代碼轉(zhuǎn)換為新的錯誤代碼

uri:錯誤頁面的路徑或者網(wǎng)站地址,這個uri是相對于root設(shè)置的根路徑而言的。

示例:

error_page ?404 ?/404.html;

基于IP的訪問控制:

allow? address | CIDR | unix |all;

設(shè)置允許訪問的IP范圍

deny ?address | CIDR | unix:| all;

設(shè)置拒絕訪問的IP范圍

示例:location?/t/?{

root?/data/www/vhost2/;

allow?172.16.100.120;

deny?all;

}

僅允許172.16.100.120這個IP地址訪問

基于賬戶密碼訪問Nginx服務(wù)器

auth_basic string | off;

是否啟用密碼認(rèn)證

auth_basic_user_file? file;

指定密碼認(rèn)證的配置文件路徑,只有在auth_basic啟用時有效。

示例:創(chuàng)建一個server.conf的配置文件,并設(shè)置基于賬號密碼訪問該server中配置的虛擬主機(jī)

1、先創(chuàng)建server.conf的配置文件

#cd /etc/nginx/conf.d/

#vim server.confserver?{

listen?8888;

server_name?test;

root?/wwwroot/html;

location?/t/?{

auth_basic?"Admin?Area";

auth_basic_user_file??/etc/nginx/.ngxpasswd;

}

}

2、創(chuàng)建賬號密碼文件,需要安裝httpd

#htpasswd -c -m /etc/nginx/.ngxpasswd tom

創(chuàng)建密碼文件,路徑為/etc/nginx/.ngxpasswd ?并創(chuàng)建一個tom的賬號,命令會提示輸入密碼

#htpasswd? -m /etc/nginx/.ngxpasswd jerry

再創(chuàng)建一個名為Jerry的賬號,創(chuàng)建第二個賬號時不用-c選項(xiàng)

3、測試訪問網(wǎng)站

stub_status:

通過制定的uri輸出stub_status,只能定義在server和location中。

示例:server?{

listen?8889;

server_name?test;

root?/wwwroot/html;

location?/t/?{

stub_status;

}

}

當(dāng)前活動客戶端連接數(shù)包括waiting狀態(tài)的客戶端

accepts:已接受的客戶端連接總數(shù)量

handled : 已處理的客戶端連接數(shù)量

requests: 客戶端總請求數(shù)量

reading:當(dāng)前nginx正在讀取客戶端請求報(bào)文的連接數(shù)量數(shù)量

writing:正在響應(yīng)客戶端請求報(bào)文的連接數(shù)量

waiting:等待其發(fā)出請求的空閑連接數(shù)量

location段配置:

注意,location段只能在server段中配置,前面的文章有講過。

其配置結(jié)構(gòu)為:server?{

...

location?[PATTERN]?{

...

}

location?[PATTERN]?{

...

}

}

location的語法結(jié)構(gòu)為:

location [ = | ~ | ~* | ^~ ] uri { ...}

其中uri變量是帶匹配的請求字符串,可以是不含正則表達(dá)式的字符串,如/myserver.php等。也可以是含有正則表達(dá)式的字符串,如\.php$(表示以.php結(jié)尾的URL)。不含正則表達(dá)式的uri稱為標(biāo)準(zhǔn)uri,含有正則表達(dá)式的uri稱為正則uri。

方括號中的都是可選項(xiàng),用來改變請求字符串與uri的匹配方式。在介紹這幾個標(biāo)識的含義之前,先說說Nginx服務(wù)器是如何在sever塊中所有l(wèi)ocation塊的uri和請求的字符串匹配的:

在不添加此選項(xiàng)之前,Nginx服務(wù)器首先在server塊的多個location中搜索是否有標(biāo)準(zhǔn)uri和請求的字符串匹配,如果有多個匹配,就記錄匹配度最高的一個。然后在用location塊中的正則uri和請求的字符串匹配,當(dāng)?shù)谝粋€正則uri匹配成功時,結(jié)束搜索,并使用這個location塊處理處理此請求。如果正則匹配全部失敗,則使用剛才記錄的匹配度最高的location塊來處理請求

“=”:用于標(biāo)準(zhǔn)uri前,要求請求字符串與uri嚴(yán)格匹配,如果匹配成功則立即停止向下所有并立即處理此請求。

“~”:用于表示uri包含正則表達(dá)式,并且區(qū)分大小寫

“~*”:用于表示uri包含正則表達(dá)式,并且不區(qū)分大小寫

“^~”:用于標(biāo)準(zhǔn)uri前,要求Nginx服務(wù)器找到標(biāo)識uri和請求字符串匹配度最高的location后,立即使用此location處理請求,而不再使用location塊中的正則uri和請求字符串做匹配。

匹配優(yōu)先級:精確匹配“=” > “^~” > “~”或者~*> 不帶符號的URL

location段的配置指令:

root:

指定根目錄,語法為:root ?path;

該指令也還能用于http段和server段中。

示例:

location ?/data/ {

root ?/locationtest1;

}

當(dāng)location塊接收到“/data/index.htm”的請求時,將在/locationtest1/data/目錄下找到index.htm來響應(yīng)請求。

alias:

定義路徑別名。語法:alias ?path;

注意,這里的path是修改后的根路徑,而不是相對于root 的路徑

示例:server?{

listen?80;

server_name?test;

error_log?/etc/nginx/conf.d/error.log;

root?/wwwroot/html;

index?c.html;

location?/abc/?{

alias?/wwwroot/html/data/zeng/;

}

}

當(dāng)用戶請求test/abc/index.html時,Nginx將從/wwwroot/html/data/zeng/目錄中找到index.html來響應(yīng)請求。

index:

設(shè)置默認(rèn)主頁,和在server段中的用法一樣,不再作說明。

總結(jié)

以上是生活随笔為你收集整理的php的server和location,3、Nginx关于server块和location块的配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。