色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Nginx的5大應用場景

jf_ro2CN3Fa ? 來源:CSDN ? 作者:CSDN ? 2022-10-19 10:55 ? 次閱讀


一、HTTP服務器

Nginx本身也是一個靜態資源的服務器,當只有靜態資源的時候,就可以使用Nginx來做服務器,如果一個網站只是靜態頁面的話,那么就可以通過這種方式來實現部署。

1、 首先在文檔根目錄Docroot(/usr/local/var/www)下創建html目錄, 然后在html中放一個test.html;

33fb98c4-4f53-11ed-a3b6-dac502259ad0.png

2、 配置nginx.conf中的server

usermengdaystaff;

http{
server{
listen80;
server_namelocalhost;
client_max_body_size1024M;

#默認location
location/{
root/usr/local/var/www/html;
indexindex.htmlindex.htm;
}
}
}

3、訪問測試

  • http://localhost/ 指向/usr/local/var/www/index.html, index.html是安裝nginx自帶的html
  • http://localhost/test.html 指向/usr/local/var/www/html/test.html

注意:如果訪問圖片出現403 Forbidden錯誤,可能是因為nginx.conf 的第一行user配置不對,默認是#user nobody;是注釋的,linux下改成user root; macos下改成user 用戶名 所在組; 然后重新加載配置文件或者重啟,再試一下就可以了, 用戶名可以通過who am i 命令來查看。

4、指令簡介

  • server : 用于定義服務,http中可以有多個server塊
  • listen : 指定服務器偵聽請求的IP地址和端口,如果省略地址,服務器將偵聽所有地址,如果省略端口,則使用標準端口
  • server_name : 服務名稱,用于配置域名
  • location : 用于配置映射路徑uri對應的配置,一個server中可以有多個location, location后面跟一個uri,可以是一個正則表達式, / 表示匹配任意路徑, 當客戶端訪問的路徑滿足這個uri時就會執行location塊里面的代碼
  • root : 根路徑,當訪問http://localhost/test.html,“/test.html”會匹配到”/”uri, 找到root為/usr/local/var/www/html,用戶訪問的資源物理地址=root + uri = /usr/local/var/www/html + /test.html=/usr/local/var/www/html/test.html
  • index : 設置首頁,當只訪問server_name時后面不跟任何路徑是不走root直接走index指令的;如果訪問路徑中沒有指定具體的文件,則返回index設置的資源,如果訪問http://localhost/html/ 則默認返回index.html

5、location uri正則表達式

  • . :匹配除換行符以外的任意字符
  • ? :重復0次或1次
  • + :重復1次或更多次
  • * :重復0次或更多次
  • d :匹配數字
  • ^ :匹配字符串的開始
  • $ :匹配字符串的結束
  • {n} :重復n次
  • {n,} :重復n次或更多次
  • [c] :匹配單個字符c
  • [a-z] :匹配a-z小寫字母的任意一個
  • (a|b|c) : 屬線表示匹配任意一種情況,每種情況使用豎線分隔,一般使用小括號括括住,匹配符合a字符 或是b字符 或是c字符的字符串
  • 反斜杠:用于轉義特殊字符

小括號()之間匹配的內容,可以在后面通過$1來引用,$2表示的是前面第二個()里的內容。正則里面容易讓人困惑的是轉義特殊字符。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

二、靜態服務器

公司中經常會遇到靜態服務器,通常會提供一個上傳的功能,其他應用如果需要靜態資源就從該靜態服務器中獲取。

1、在/usr/local/var/www 下分別創建images和img目錄,分別在每個目錄下放一張test.jpg

34079552-4f53-11ed-a3b6-dac502259ad0.png
http{
server{
listen80;
server_namelocalhost;


set$doc_root/usr/local/var/www;

#默認location
location/{
root/usr/local/var/www/html;
indexindex.htmlindex.htm;
}

location^~/images/{
root$doc_root;
}

location~*.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)${
root$doc_root/img;
}
}
}

自定義變量使用set指令,語法 set 變量名值;引用使用變量名值;引用使用變量名; 這里自定義了doc_root變量。

靜態服務器location的映射一般有兩種方式:

  • 使用路徑,如 /images/ 一般圖片都會放在某個圖片目錄下,
  • 使用后綴,如 .jpg、.png 等后綴匹配模式

訪問http://localhost/test.jpg 會映射到 $doc_root/img

訪問http://localhost/images/test.jpg 當同一個路徑滿足多個location時,優先匹配優先級高的location,由于^~ 的優先級大于 ~, 所以會走/images/對應的location

常見的location路徑映射路徑有以下幾種:

  • = 進行普通字符精確匹配。也就是完全匹配。
  • ^~ 前綴匹配。如果匹配成功,則不再匹配其他location。
  • ~ 表示執行一個正則匹配,區分大小寫
  • ~* 表示執行一個正則匹配,不區分大小寫
  • /xxx/ 常規字符串路徑匹配
  • / 通用匹配,任何請求都會匹配到

location優先級

當一個路徑匹配多個location時究竟哪個location能匹配到時有優先級順序的,而優先級的順序于location值的表達式類型有關,和在配置文件中的先后順序無關。相同類型的表達式,字符串長的會優先匹配。

以下是按優先級排列說明:

  • 等號類型(=)的優先級最高。一旦匹配成功,則不再查找其他匹配項,停止搜索。
  • ^~類型表達式,不屬于正則表達式。一旦匹配成功,則不再查找其他匹配項,停止搜索。
  • 正則表達式類型(~ ~*)的優先級次之。如果有多個location的正則能匹配的話,則使用正則表達式最長的那個。
  • 常規字符串匹配類型。按前綴匹配。
  • / 通用匹配,如果沒有匹配到,就匹配通用的

優先級搜索問題:不同類型的location映射決定是否繼續向下搜索

  • 等號類型、^~類型:一旦匹配上就停止搜索了,不會再匹配其他location了
  • 正則表達式類型(~ ~*),常規字符串匹配類型/xxx/ : 匹配到之后,還會繼續搜索其他其它location,直到找到優先級最高的,或者找到第一種情況而停止搜索

location優先級從高到底:

(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ~,~* 正則順序) > (location 部分起始路徑) > (/)

location=/{
#精確匹配/,主機名后面不能帶任何字符串/
[configurationA]
}
location/{
#匹配所有以/開頭的請求。
#但是如果有更長的同類型的表達式,則選擇更長的表達式。
#如果有正則表達式可以匹配,則優先匹配正則表達式。
[configurationB]
}
location/documents/{
#匹配所有以/documents/開頭的請求,匹配符合以后,還要繼續往下搜索。
#但是如果有更長的同類型的表達式,則選擇更長的表達式。
#如果有正則表達式可以匹配,則優先匹配正則表達式。
[configurationC]
}
location^~/images/{
#匹配所有以/images/開頭的表達式,如果匹配成功,則停止匹配查找,停止搜索。
#所以,即便有符合的正則表達式location,也不會被使用
[configurationD]
}

location~*.(gif|jpg|jpeg)${
#匹配所有以 gif jpg jpeg結尾的請求。
#但是以/images/開頭的請求,將使用ConfigurationD,D具有更高的優先級
[configurationE]
}

location/images/{
#字符匹配到/images/,還會繼續往下搜索
[configurationF]
}


location=/test.htm{
root/usr/local/var/www/htm;
indexindex.htm;
}

注意:location的優先級與location配置的位置無關

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://gitee.com/zhijiantianya/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

三、反向代理

反向代理應該是Nginx使用最多的功能了,反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。

簡單來說就是真實的服務器不能直接被外部網絡訪問,所以需要一臺代理服務器,而代理服務器能被外部網絡訪問的同時又跟真實服務器在同一個網絡環境,當然也可能是同一臺服務器,端口不同而已。

反向代理通過proxy_pass指令來實現。

啟動一個Java Web項目,端口號為8081

server{
listen80;
server_namelocalhost;

location/{
proxy_passhttp://localhost:8081;
proxy_set_headerHost$host:$server_port;
#設置用戶ip地址
proxy_set_headerX-Forwarded-For$remote_addr;
#當請求服務器出錯去尋找其他服務器
proxy_next_upstreamerrortimeoutinvalid_headerhttp_500http_502http_503;
}

}

當我們訪問localhost的時候,就相當于訪問 localhost:8081

四、負載均衡

負載均衡也是Nginx常用的一個功能,負載均衡其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

簡單而言就是當有2臺或以上服務器時,根據規則隨機的將請求分發到指定的服務器上處理,負載均衡配置一般都需要同時配置反向代理,通過反向代理跳轉到負載均衡。而Nginx目前支持自帶3種負載均衡策略,還有2種常用的第三方策略。

負載均衡通過upstream指令來實現。

1. RR(round robin :輪詢 默認)

每個請求按時間順序逐一分配到不同的后端服務器,也就是說第一次請求分配到第一臺服務器上,第二次請求分配到第二臺服務器上,如果只有兩臺服務器,第三次請求繼續分配到第一臺上,這樣循環輪詢下去,也就是服務器接收請求的比例是 1:1, 如果后端服務器down掉,能自動剔除。輪詢是默認配置,不需要太多的配置

同一個項目分別使用8081和8082端口啟動項目

upstreamweb_servers{
serverlocalhost:8081;
serverlocalhost:8082;
}

server{
listen80;
server_namelocalhost;
#access_loglogs/host.access.logmain;


location/{
proxy_passhttp://web_servers;
#必須指定HeaderHost
proxy_set_headerHost$host:$server_port;
}
}

訪問地址仍然可以獲得響應 http://localhost/api/user/login?username=zhangsan&password=111111 ,這種方式是輪詢的

2. 權重

指定輪詢幾率,weight和訪問比率成正比, 也就是服務器接收請求的比例就是各自配置的weight的比例,用于后端服務器性能不均的情況,比如服務器性能差點就少接收點請求,服務器性能好點就多處理點請求。

upstreamtest{
serverlocalhost:8081weight=1;
serverlocalhost:8082weight=3;
serverlocalhost:8083weight=4backup;
}

示例是4次請求只有一次被分配到8081上,其他3次分配到8082上。backup是指熱備,只有當8081和8082都宕機的情況下才走8083

3. ip_hash

上面的2種方式都有一個問題,那就是下一個請求來的時候請求可能分發到另外一個服務器,當我們的程序不是無狀態的時候(采用了session保存數據),這時候就有一個很大的很問題了,比如把登錄信息保存到了session中,那么跳轉到另外一臺服務器的時候就需要重新登錄了,所以很多時候我們需要一個客戶只訪問一個服務器,那么就需要用iphash了,iphash的每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。

upstreamtest{
ip_hash;
serverlocalhost:8080;
serverlocalhost:8081;
}

4. fair(第三方)

按后端服務器的響應時間來分配請求,響應時間短的優先分配。這個配置是為了更快的給用戶響應

upstreambackend{
fair;
serverlocalhost:8080;
serverlocalhost:8081;
}

5. url_hash(第三方)

按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。在upstream中加入hash語句,server語句中不能寫入weight等其他的參數hash_method是使用的hash算法

upstreambackend{
hash$request_uri;
hash_methodcrc32;
serverlocalhost:8080;
serverlocalhost:8081;
}

以上5種負載均衡各自適用不同情況下使用,所以可以根據實際情況選擇使用哪種策略模式,不過fair和url_hash需要安裝第三方模塊才能使用。

五、動靜分離

動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。

upstreamweb_servers{
serverlocalhost:8081;
serverlocalhost:8082;
}

server{
listen80;
server_namelocalhost;

set$doc_root/usr/local/var/www;

location~*.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)${
root$doc_root/img;
}

location/{
proxy_passhttp://web_servers;
#必須指定HeaderHost
proxy_set_headerHost$host:$server_port;
}

error_page500502503504/50x.html;
location=/50x.html{
root$doc_root;
}

}

六、其他

1.return指令

返回http狀態碼 和 可選的第二個參數可以是重定向的URL

location/permanently/moved/url{
return301http://www.example.com/moved/here;
}

2. rewrite指令

重寫URI請求 rewrite,通過使用rewrite指令在請求處理期間多次修改請求URI,該指令具有一個可選參數和兩個必需參數。

第一個(必需)參數是請求URI必須匹配的正則表達式。

第二個參數是用于替換匹配URI的URI。

可選的第三個參數是可以停止進一步重寫指令的處理或發送重定向(代碼301或302)的標志

location/users/{
rewrite^/users/(.*)$/show?user=$1break;
}

3. error_page指令

使用error_page指令,您可以配置NGINX返回自定義頁面以及錯誤代碼,替換響應中的其他錯誤代碼,或將瀏覽器重定向到其他URI。在以下示例中,error_page指令指定要返回404頁面錯誤代碼的頁面(/404.html)。

error_page404/404.html;

4. 日志

訪問日志:需要開啟壓縮 gzip on; 否則不生成日志文件,打開log_formataccess_log注釋

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

access_log/usr/local/etc/nginx/logs/host.access.logmain;

gzipon;

5. deny 指令

#禁止訪問某個目錄
location~*.(txt|doc)${
root$doc_root;
denyall;
}

6. 內置變量

nginx的配置文件中可以使用的內置變量以美元符$開始,也有人叫全局變量。其中,部分預定義的變量的值是可以改變的。

  • $args#這個變量等于請求行中的參數,同$query_string
  • $content_length :請求頭中的Content-length字段。
  • $content_type :請求頭中的Content-Type字段。
  • $document_root :當前請求在root指令中指定的值。
  • $host :請求主機頭字段,否則為服務器名稱。
  • $http_user_agent :客戶端agent信息
  • $http_cookie :客戶端cookie信息
  • $limit_rate :這個變量可以限制連接速率。
  • $request_method :客戶端請求的動作,通常為GET或POST。
  • $remote_addr :客戶端的IP地址。
  • $remote_port :客戶端的端口。
  • $remote_user :已經經過Auth Basic Module驗證的用戶名。
  • $request_filename :當前請求的文件路徑,由root或alias指令與URI請求生成。
  • $scheme :HTTP方法(如http,https)。
  • $server_protocol :請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
  • $server_addr :服務器地址,在完成一次系統調用后可以確定這個值。
  • $server_name :服務器名稱。
  • $server_port :請求到達服務器的端口號。
  • $request_uri :包含請求參數的原始URI,不包含主機名,如:”/foo/bar.php?arg=baz”。
  • $uri :不帶請求參數的當前URI,$uri不包含主機名,如”/foo/bar.html”。
  • $document_uri :與$uri相同


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9233

    瀏覽量

    85628
  • 代碼
    +關注

    關注

    30

    文章

    4802

    瀏覽量

    68735
  • nginx
    +關注

    關注

    0

    文章

    151

    瀏覽量

    12189

原文標題:Nginx 的 5 大應用場景,太實用了!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    倍頻器的技術原理和應用場景

    倍頻器是一種用于將輸入信號的頻率倍增的電子設備,以下是關于倍頻器的技術原理和應用場景的詳細解釋:技術原理倍頻器的技術原理主要基于非線性元件(如二極管、晶體管等)的特性和頻率變換技術。 非線性元件
    發表于 11-29 14:49

    系統放大器的技術原理和應用場景

    系統放大器是一種重要的電子設備,其技術原理和應用場景都具有一定的專業性和廣泛性。以下是對系統放大器的技術原理和應用場景的詳細介紹:一、技術原理系統放大器的工作原理基于電子器件的非線性特性,通過控制
    發表于 11-18 14:46

    OTA測試暗箱的技術原理和應用場景

    OTA測試暗箱在無線通信設備的研發與測試中扮演著至關重要的角色。以下是對OTA測試暗箱技術原理和應用場景的詳細闡述:一、OTA測試暗箱的技術原理OTA測試暗箱的技術原理主要基于電磁波在封閉空間
    發表于 11-14 14:36

    nginx負載均衡配置介紹

    代理 安裝Keepalived 配置Keepalived 編寫腳本監控Keepalived和nginx的狀態 配置keepalived加入監控腳本的配置 nginx負載均衡介紹 nginx
    的頭像 發表于 11-10 13:39 ?267次閱讀
    <b class='flag-5'>nginx</b>負載均衡配置介紹

    無線通信測試平臺的技術原理和應用場景

    和4G/5G網絡。 二、無線通信測試平臺的應用場景無線通信測試平臺的應用場景非常廣泛,包括但不限于以下幾個方面: 移動通信網絡測試: 對2G、3G、4G、5G等移動通信網絡進行測試,
    發表于 11-06 14:29

    實時示波器的技術原理和應用場景

    實時示波器是一種高性能的電子測量儀器,其技術原理和應用場景對于電子工程和通信技術領域具有重要意義。以下是對實時示波器的技術原理和應用場景的詳細解釋:一、技術原理實時示波器的工作原理基于電子束在熒光屏
    發表于 10-23 14:22

    源測量單元設備的技術原理和應用場景

    源測量單元(SMU)設備是一種集成了精密電源(PPS)和高性能數字萬用表(DMM)功能的測試設備。以下是對其技術原理和應用場景的詳細解析:一、技術原理 集成功能: SMU在單個儀器中集成了電源
    發表于 10-22 11:10

    太陽膜測試儀的技術原理和應用場景

    太陽膜測試儀的技術原理和應用場景可以詳細闡述如下:技術原理太陽膜測試儀的技術原理主要基于光學測量和物理定律。具體來說,它通過模擬太陽光中的各種波長(主要是紫外線、可見光和紅外線)的輻射,來檢測太陽膜
    發表于 09-29 14:18

    超聲波測厚儀的技術原理和應用場景

    超聲波測厚儀的技術原理和應用場景詳細如下:技術原理超聲波測厚儀利用超聲波脈沖反射原理來測量材料的厚度。具體工作原理如下: 發射超聲波脈沖:測厚儀的探頭(也稱為換能器)向被測物體發射一束高頻超聲波脈沖
    發表于 09-27 15:06

    智能IC卡測試設備的技術原理和應用場景

    智能IC卡測試設備的技術原理和應用場景,可以從以下幾個方面進行闡述:技術原理智能IC卡測試設備的技術原理主要圍繞IC卡的通信和數據處理機制展開。IC卡(包括智能IC卡)通常內置有微電子芯片,該芯片
    發表于 09-26 14:27

    請問risc-v芯片的主要應用場景是哪里?

    如題,我想請教一下risc-v芯片與其他的芯片在應用場景上有哪些不一樣?
    發表于 07-30 21:23

    FPGA與MCU的應用場景

    FPGA的應用場景有這些: 快速原型設計 FPGA可以快速配置成多種定制數字電路,允許在不需要昂貴且耗時的制造過程的情況下進行快速部署和修改。 硬件加速 在需要高性能和低延遲的應用中,FPGA的并行
    發表于 07-29 15:45

    STM32待機模式適合用于那些應用場景

    對于查看STM32低功耗模式,共有三種,其中最省電的為待機模式,但是待機模式喚醒后相當于軟件復位了,ram及寄存器中的值都復位了,僅僅是備份域的寄存器除外,因此有個疑問,待機模式適合用于那些應用場景
    發表于 05-07 07:46

    NanoEdge AI的技術原理、應用場景及優勢

    能耗并提高數據安全性。本文將對 NanoEdge AI 的技術原理、應用場景以及優勢進行綜述。 1、技術原理 NanoEdge AI 的核心技術包括邊緣計算、神經網絡壓縮和低功耗硬件設計。邊緣計算
    發表于 03-12 08:09

    AG32VF-MIPI應用場景

    MIPI接口技術在圖像和視頻傳輸中的應用越來越廣泛,應用場景也在不斷拓展,而不僅限于移動設備。MIPI接口在物聯網、智能家居、智能監控、智能電視、智能汽車等領域也得到廣泛應用。 MIPI還可
    發表于 01-22 08:56
    主站蜘蛛池模板: 亚洲欧美自拍明星换脸| 国产午夜理论片YY8840Y| 日韩精品一区VR观看| 国产制服丝袜91在线| a视频在线免费观看| 亚洲欧美日韩在线码不卡 | 真实伦 乱| 无码爽死成人777在线观看网站 | 午夜伦理yy44008影院| 嗯啊…跟校草在教室里做h| 果冻传媒2021一二三区| 国产A级毛片久久久久久久| AV天堂AV亚洲啪啪久久无码| 一手揉着乳头一手模仿抽插视频 | 俄罗斯bbbb| 99无码熟妇丰满人妻啪啪| 一区三区在线专区在线| 亚洲成年人在线观看| 撕开美女的衣服2| 日本肉肉口番工全彩动漫| 欧美精品一卡二卡| 麻豆啊传媒app黄版破解免费| 久久超碰色中文字幕| 精品国产国产精2020久久日| 国产又黄又硬又粗| 国产三级在线观看免费| 国产精品av免费观看| 俄罗斯mm| 调教日本美女| 东北女人奶大毛多水多| Chineseman瘦老头77| 99久视频只有精品2019| 97在线视频免费| 91久久精一区二区三区大全| 中文视频在线| 80岁色老头69av| 97在线视频网站| av视频在线免播放观看| FREECHINESE东北女人真爽| xxx动漫xxx在线观看| 阿离被扒开双腿疯狂输出|