最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx之轉(zhuǎn)發(fā)規(guī)則、負(fù)載均衡、server_name用法及說(shuō)明

 更新時(shí)間:2026年06月16日 11:10:04   作者:北風(fēng)toto  
Nginx轉(zhuǎn)發(fā)規(guī)則詳解,包括ginx負(fù)載均衡機(jī)制,Nginx隱藏版本號(hào)配置,涵蓋location精確與正則匹配,Nginx服務(wù)器配置技巧全面解析

一、nginx常用的轉(zhuǎn)發(fā)規(guī)則

location 指令說(shuō)明

該指令用于匹配 URL,語(yǔ)法如下:

指令說(shuō)明
=用于不含正則表達(dá)式的 uri 前,要求請(qǐng)求字符串與 uri 嚴(yán)格匹配,如果匹配 成功,就停止繼續(xù)向下搜索并立即處理該請(qǐng)求。
~用于表示 uri 包含正則表達(dá)式,并且區(qū)分大小寫(xiě)。
~*用于表示 uri 包含正則表達(dá)式,并且不區(qū)分大小寫(xiě)。
^~用于不含正則表達(dá)式的uri前,要求Nginx服務(wù)器找到標(biāo)識(shí)uri和請(qǐng)求字 符串匹配度最高的 location 后,立即使用此 location 處理請(qǐng)求,而不再使用 location 塊中的正則 uri 和請(qǐng)求字符串做匹配。
!~區(qū)分大小寫(xiě)不匹配。
!~*不區(qū)分大小寫(xiě)不匹配
/a普通前綴匹配,優(yōu)先級(jí)低于帶參數(shù)前綴匹配。
/任何請(qǐng)求都會(huì)匹配
  • 首先匹配 =
  • 其次匹配^~,
  • 其次是按文件中順序的正則匹配
  • 最后是交給 / 通用匹配
  • 當(dāng)有匹配成功時(shí)候,停止匹配,按當(dāng)前匹配規(guī)則處理請(qǐng)求。

location轉(zhuǎn)發(fā)使用

  • location /api1/
# 如果請(qǐng)求的是:http://localhost:80/api1,
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001/
		location /api1/ {
			proxy_pass http://localhost:9001/;
        }       
  • location = /api1/ (精確匹配)
# 如果請(qǐng)求的是:http://localhost:80/api1,會(huì)被匹配到
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001/
# 如果請(qǐng)求的是:http://localhost:80/api1/test,不會(huì)被匹配到,因?yàn)槭蔷_匹配
		location = /api1/ {
			proxy_pass http://localhost:9001/;
        }
  • location ~ /api1 (正則表達(dá)式匹配)
# rewrite重寫(xiě)了請(qǐng)求路徑,break不可省略,$1為正則匹配的內(nèi)容
# ^/api1/(.*)$,在這個(gè)正則表達(dá)式中,$1為(.*)中的內(nèi)容
# proxy_set_header的使用并不會(huì)失效
# 如果請(qǐng)求的是:http://localhost:80/api1/test,
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001/test
		location ~ /api1 {	
			rewrite ^/api1/(.*)$ /$1 break;
			proxy_set_header test001 $host:$server_port;
			proxy_set_header test002 $remote_addr;
			proxy_pass http://localhost:9001;
        }
# 如果請(qǐng)求的是:http://localhost:80/api1/test,
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001/api1/test
		location ~ /api1 {	
			proxy_pass http://localhost:9001;
        }

二、upstream負(fù)載均衡使用

  • 當(dāng)有其中一個(gè)服務(wù)掛了,并不會(huì)影響使用。nginx發(fā)現(xiàn)超時(shí)之后會(huì)使用其他能用的服務(wù),當(dāng)訪問(wèn)到掛了的服務(wù)響應(yīng)會(huì)延遲。當(dāng)所有服務(wù)超時(shí)則報(bào)錯(cuò)
#server只能是ip+端口,不然啟動(dòng)報(bào)錯(cuò)
	upstream api{
		server localhost:9001;
		server localhost:9002;
		server localhost:9003;
	}
#proxy_pass里面的api對(duì)應(yīng)的是upstream后面的api
		location /api/ {	
			proxy_pass http://api/;
        }

三、server_name使用

  • 看下列代碼,端口一樣,server_name不一樣
  • 訪問(wèn)http://www.test001.com/api/test,進(jìn)入第一個(gè)server,轉(zhuǎn)發(fā)的實(shí)際為http://localhost:9001/test
  • 訪問(wèn)http://www.test002.com/api/test,進(jìn)入第二個(gè)server,轉(zhuǎn)發(fā)的實(shí)際為http://localhost:9002/test
  • 對(duì)于沒(méi)有配置的server_name,默認(rèn)進(jìn)入第一個(gè)server處理
  • 訪問(wèn)http://127.0.0.1/api/test,進(jìn)入第一個(gè)server,轉(zhuǎn)發(fā)的實(shí)際為http://localhost:9001/test
  • 訪問(wèn)http://www.test003.com/api/test,進(jìn)入第一個(gè)server,轉(zhuǎn)發(fā)的實(shí)際為http://localhost:9001/test
#本機(jī)host配置
127.0.0.1 www.test001.com
127.0.0.1 www.test002.com
127.0.0.1 www.test003.com
    server {						
		#監(jiān)聽(tīng)端口
        listen       80;		
		#服務(wù)名
        server_name  www.test001.com;		
		
		
	    location / {
            root   html;
            index  index.html index.htm;
        }
		
		location /api/ {	
			proxy_pass http://localhost:9001/;
        }
		
		#500類(lèi)型錯(cuò)誤處理
        error_page   500 502 503 504  /50x.html;
		#映射文件50x.html
        location = /50x.html {	
			#相對(duì)路徑
            root   html;
        }

    }
	
	server {						
		#監(jiān)聽(tīng)端口
        listen       80;		
		#服務(wù)名
        server_name  www.test002.com;		
		
		
	    location / {
            root   html;
            index  index.html index.htm;
        }
		
		location /api/ {	
			proxy_pass http://localhost:9002/;
        }
		
		#500類(lèi)型錯(cuò)誤處理
        error_page   500 502 503 504  /50x.html;
		#映射文件50x.html
        location = /50x.html {	
			#相對(duì)路徑
            root   html;
        }
    }

四、其他常用配置

限制請(qǐng)求類(lèi)型

  • 只允許GET和POST請(qǐng)求,寫(xiě)在server塊
if($request_method !~ ^(GET|POST)$ ){
	return 403;
}

處理靜態(tài)資源目錄遍歷問(wèn)題

  • 過(guò)濾…/ |…\,寫(xiě)在server塊
if( $request_uri ~* \.\.[\\\\/] ){
	return 404;
}

限制客戶(hù)端使用的ip或者域名

  • 寫(xiě)在server塊
#當(dāng)寫(xiě)127.0.0.1的時(shí)候,使用localhost會(huì)報(bào)500,只能使用127.0.0.1
if ( $host !~ ^127.0.0.1 ){
	return 500;
}

五、需要注意的地方

  • 當(dāng)使用 location ~ 的時(shí)候, proxy_pass結(jié)尾不能為 / ,不然會(huì)報(bào)錯(cuò)
  • access_log需要寫(xiě)在log_format后面,不然啟動(dòng)會(huì)報(bào)錯(cuò)。
  • access_log只能打印出請(qǐng)求的路徑,無(wú)法打印出代理之后的路徑。

location /api1 探討

# 如果請(qǐng)求的是:http://localhost:80/api1,
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001/api1
		location /api1 {
			proxy_pass http://localhost:9001;
        }        
# 如果請(qǐng)求的是:http://localhost:80/api1,
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001/
		location /api1/ {
			proxy_pass http://localhost:9001/;
        }        
# 如果請(qǐng)求的是:http://localhost:80/api1,
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001//
		location /api1 {
			proxy_pass http://localhost:9001/;
        }     

location ~ /api1 探討(正則表達(dá)式)

#proxy_pass最多只能寫(xiě)到端口
#比如proxy_pass http://localhost:9001/,多個(gè)/報(bào)錯(cuò)
#比如proxy_pass http://localhost:9001/test,多個(gè)/test報(bào)錯(cuò)
#所以正則表達(dá)式的轉(zhuǎn)發(fā)經(jīng)常配合rewrite使用,但是不用正則表達(dá)式依舊可以使用。

# 如果請(qǐng)求的是:http://localhost:80/api1/test,
# 轉(zhuǎn)發(fā)形成的就會(huì)是:http://localhost:9001/api1/test
		location ~ /api1 {	
			proxy_pass http://localhost:9001;
        }

$host 和 $remote_addr 的區(qū)別

  • $host 是客戶(hù)端使用的ip或者域名,$remote_addr是客戶(hù)端真正的ip
# $host為127.0.0.1
# $remote_addr為127.0.0.1
http://127.0.0.1/api/test

# $host為www.test001.com
# $remote_addr為127.0.0.1
http://www.test001.com/api/test

# $host為localhost
# $remote_addr為127.0.0.1
http://localhost/api/test

# 假設(shè)我本機(jī)ip為192.168.1.27
# $host為www.baidu.com
# $remote_addr為192.168.1.27
https://www.baidu.com/s?wd=北京

其他

Rewrite命令語(yǔ)法

rewrite < regex > < replacement > [flag]
regex:正則表達(dá)式
replacement :跳轉(zhuǎn)后的內(nèi)容
flag:rewrite支持的flag標(biāo)記
flag標(biāo)記說(shuō)明
標(biāo)記說(shuō)明
last相當(dāng)于Apache的【L】標(biāo)記,表示完成rewrite
break本條規(guī)則匹配完成即終止,不在匹配后面的任何規(guī)則
redirect返回302臨時(shí)重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址,爬蟲(chóng)不會(huì)更新url
permanent返回301永久重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址,爬蟲(chóng)更新url
ast和break比較
lastbreak
使用場(chǎng)景一般寫(xiě)在server和if中一般使用在location中
URL匹配不重質(zhì)重寫(xiě)后的url匹配終止重寫(xiě)后的url匹配
#$1為(.*)
rewrite ^/api1/(.*)$ /$1 break;

#$1為前面的(.*),$2為后面的(.*)
rewrite ^/(.*)/(.*)$ /$1 break;

#當(dāng)正則表達(dá)式和請(qǐng)求不匹配的時(shí)候,后面的/$1將不被執(zhí)行,請(qǐng)求不會(huì)被rewrite替換
rewrite ^/apitest/(.*)$ /$1 break;

Nginx 中隱藏版本號(hào)

修改nginx.conf文件

打開(kāi) Nginx 配置文件,linux系統(tǒng)下一般在 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。

在 http 塊中添加以下內(nèi)容:

server_tokens off;

修改fastcgi.conf文件

  • 編輯php-fpm配置文件,如fastcgi.conf或fcgi.conf(這個(gè)配置文件名也可以自定義的,根據(jù)具體文件名修改)。

springboot 打印請(qǐng)求路徑

logging:
  level:
    org.springframework: debug

springboot打印controller被調(diào)用的方法

logging:
  level:
    org:
      springframework:
        web:
          servlet:
            mvc:
              method:
                annotation:
                  RequestMappingHandlerMapping: trace

Controller獲取請(qǐng)求頭的內(nèi)容

HttpServletRequest request;
Enumeration<String> enumeration= request.getHeaderNames();

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器

    利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器

    本文主要介紹了利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • nginx如何將http訪問(wèn)的網(wǎng)站改成https訪問(wèn)

    nginx如何將http訪問(wèn)的網(wǎng)站改成https訪問(wèn)

    這篇文章主要介紹了nginx如何將http訪問(wèn)的網(wǎng)站改成https訪問(wèn),幫助大家更好的理解和使用nginx,感興趣的朋友可以了解下
    2021-02-02
  • 關(guān)于Nginx 命令行控制的問(wèn)題

    關(guān)于Nginx 命令行控制的問(wèn)題

    Nginx 是一個(gè)高性能的 Web 服務(wù)器,從 2001 年發(fā)展至今,由于 Nginx 對(duì)硬件和操作系統(tǒng)內(nèi)核特性的深度挖掘,使得在保持高并發(fā)的同時(shí)還能夠保持高吞吐量,這篇文章主要介紹了Nginx 命令行控制,需要的朋友可以參考下
    2022-10-10
  • Nginx啟用Gzip壓縮的完整配置指南

    Nginx啟用Gzip壓縮的完整配置指南

    Gzip壓縮是網(wǎng)站性能優(yōu)化的重要手段,可以顯著減少傳輸數(shù)據(jù)量,提高頁(yè)面加載速度,本文將詳細(xì)介紹如何在Nginx中配置Gzip壓縮,包括各種參數(shù)的作用和優(yōu)化建議,需要的朋友可以參考下
    2025-08-08
  • 實(shí)現(xiàn)nginx&php服務(wù)器配置的非主流配置方法

    實(shí)現(xiàn)nginx&php服務(wù)器配置的非主流配置方法

    這種方法并非以前所流行的apache 加 php_module 的方式運(yùn)行,我是采用nginx 作為web服務(wù)器,以fastcgi的方式運(yùn)行php
    2011-05-05
  • Nginx四層負(fù)載均衡配置以及Stream模塊使用

    Nginx四層負(fù)載均衡配置以及Stream模塊使用

    文章介紹了如何在Nginx中配置四層負(fù)載均衡,包括stream塊的使用、upstream和server的定義,以及與七層負(fù)載均衡的對(duì)比,文章還詳細(xì)講解了負(fù)載均衡的算法、配置參數(shù)、實(shí)際應(yīng)用場(chǎng)景以及一些優(yōu)化建議,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn)

    Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn)

    這篇文章主要介紹了Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • nginx?如何配置文件上傳大小

    nginx?如何配置文件上傳大小

    這篇文章主要介紹了nginx?如何配置文件上傳大小,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • Nginx在Windows下的安裝與使用過(guò)程詳解

    Nginx在Windows下的安裝與使用過(guò)程詳解

    Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP服務(wù)器,這篇文章主要介紹了Nginx在Windows下的安裝與使用,需要的朋友可以參考下
    2023-05-05
  • 分享nginx+php-fpm實(shí)現(xiàn)大文件下載排坑的過(guò)程

    分享nginx+php-fpm實(shí)現(xiàn)大文件下載排坑的過(guò)程

    這篇文章主要介紹了nginx+php-fpm實(shí)現(xiàn)大文件下載排坑的過(guò)程,文中通過(guò)代碼實(shí)例相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定得參考借鑒價(jià)值,需要的朋友參考下吧
    2018-08-08

最新評(píng)論

沙洋县| 当阳市| 廉江市| 钦州市| 巍山| 黔南| 沙雅县| 青阳县| 武乡县| 佳木斯市| 丰都县| 郎溪县| 栾川县| 辽阳市| 潜山县| 泾阳县| 南郑县| 烟台市| 西乌| 岑巩县| 米易县| 福安市| 普陀区| 上林县| 清水河县| 镇雄县| 张掖市| 工布江达县| 昌黎县| 南雄市| 柏乡县| 博罗县| 东乡族自治县| 东光县| 金华市| 江永县| 威远县| 玉环县| 苍山县| 东乡| 定安县|