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

nginx通過(guò)location配置代理的原理和實(shí)現(xiàn)方式

 更新時(shí)間:2025年03月19日 11:23:31   作者:寅燈  
這篇文章主要介紹了nginx通過(guò)location配置代理的原理和實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

nginx通過(guò)location配置代理的原理和方式,是我們作為運(yùn)維人員需要熟知的內(nèi)容,前后端服務(wù)通過(guò)nginx作為橋梁互通訪問(wèn),今天我們分享一下具體使用場(chǎng)景。

一、場(chǎng)景一:?jiǎn)我痪W(wǎng)絡(luò)環(huán)境

1、互聯(lián)網(wǎng)環(huán)境

1)不用nginx負(fù)載

通過(guò)VsCode、Hbuilder、WebStorm 等前端開(kāi)發(fā)工具 ,本地啟動(dòng)啟動(dòng)前端代碼,啟動(dòng)后用默認(rèn)ip(localhost(127.0.0.1))、端口號(hào)8080或者是隨機(jī)生成的,前端頁(yè)面打開(kāi)后,直接調(diào)用后端接口,接口的ip地址可以直接寫(xiě)在代碼里,自動(dòng)觸發(fā)直接訪問(wèn)后端服務(wù)。前端代碼一般會(huì)使用相對(duì)路徑或者沒(méi)有完整寫(xiě)出 IP 和端口的接口地址,比如:

axios.get('/api/user') 

這種情況下:前端系統(tǒng)會(huì)根據(jù)你當(dāng)前運(yùn)行的環(huán)境來(lái)推斷請(qǐng)求的地址。如果你是通過(guò) HBuilder 啟動(dòng)本地開(kāi)發(fā)環(huán)境(如使用 HBuilderX 直接啟動(dòng)或者 npm run dev ),它會(huì)根據(jù)默認(rèn)的開(kāi)發(fā)服務(wù)器(通常是 localhost127.0.0.1)來(lái)拼接出完整的請(qǐng)求 URL。請(qǐng)求會(huì)默認(rèn)發(fā)送到:

http://localhost:8080/api/user

(假設(shè)你的本地服務(wù)器是在 8080 端口上運(yùn)行的)。這個(gè)過(guò)程本質(zhì)上是因?yàn)闉g覽器或應(yīng)用會(huì)將請(qǐng)求的路徑補(bǔ)充為完整的 URL,基于當(dāng)前運(yùn)行環(huán)境的 IP 和端口來(lái)自動(dòng)推導(dǎo)。

假如:你在代碼中明確指定了完整的后端接口地址,例如:

axios.get('http://192.168.1.100:3000/api/user')

此時(shí),無(wú)論你是在本地開(kāi)發(fā)還是部署到服務(wù)器,前端代碼都會(huì)按照這個(gè)地址去發(fā)送請(qǐng)求。此時(shí),前端不會(huì)再使用默認(rèn)的地址和端口,因?yàn)槟阋呀?jīng)顯式提供了完整的域名/IP 和端口。這意味著,在這種情況下,系統(tǒng)不會(huì)再進(jìn)行自動(dòng)拼接,并且請(qǐng)求會(huì)直接發(fā)送到你指定的后端地址,而不會(huì)涉及默認(rèn)的本地地址。

2)使用nginx代理前端代碼

此環(huán)境中把前端代碼打包后放到nginx負(fù)載包下面的html文件夾下面,nginx.conf 配置文件中簡(jiǎn)單的配置一下代理地址。

 server {
        listen       8081;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
		
		location / {
			root   html/build-f/build/web; #效果
            index  index.html index.htm;
        }
}

前端代碼通過(guò)nginx,后端代碼直接在瀏覽器請(qǐng)求了,不經(jīng)過(guò)nginx負(fù)載了。

3)使用nginx代理前后端代碼

如果后端的API接口也要通過(guò)nginx代理,那么需要額外添加配置

    server {
        listen       8081;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
		
		location / { 
			root   html/build-jt-f/build-jt/web; #效果
            index  index.html index.htm;
        }
		
		 # 后臺(tái)請(qǐng)求接口轉(zhuǎn)發(fā)到接口地址
        location /nandao/url1Server {
            #add_header 'Access-Control-Allow-Origin' '*';
            #add_header 'Access-Control-Allow-Methods' 'POST,GET,OPTIONS';
            proxy_pass http://localhost:8888/;
			rewrite ^/nandao/url1Server/(.*) /$1 break;
        }
}

這樣配置之后的運(yùn)行邏輯如下:

  • 瀏覽器上顯示的請(qǐng)求地址如下:
http://localhost:8081/nandao/url1Server/basin/selectCity?code=010
  • 經(jīng)過(guò)nginx后實(shí)際請(qǐng)求后端接口的全路徑如下:
http://localhost:8888/basin/selectCity?code=010

即:http://localhost:8081 換成 http://localhost:8888,然后 /nandao/url1Server/ 字符串去掉!

2、局域網(wǎng)環(huán)境

全局域網(wǎng)環(huán)境和互聯(lián)網(wǎng)環(huán)境類(lèi)似,不牽涉到網(wǎng)絡(luò)問(wèn)題,思路是一致的。

二、場(chǎng)景二:多種網(wǎng)絡(luò)環(huán)境

1、頁(yè)面端互聯(lián)網(wǎng)訪問(wèn)局域網(wǎng)

前后端服務(wù)均部署到局域網(wǎng),現(xiàn)在要配置通過(guò)互聯(lián)網(wǎng)域名訪問(wèn)局域網(wǎng)的應(yīng)用。

一般有以下幾個(gè)方案:配置NAT和端口映射(一般通過(guò)路由器)、配置反向代理(使用Nginx或其他代理服務(wù)器)、使用VPN(虛擬專(zhuān)用網(wǎng)絡(luò))、通過(guò)公網(wǎng)IP直接訪問(wèn)(如果有公網(wǎng)IP)。

此處我們分析常用的nginx反向代理:在公網(wǎng)可訪問(wèn)的服務(wù)器上部署 Nginx,配置反向代理,將用戶請(qǐng)求轉(zhuǎn)發(fā)到局域網(wǎng)內(nèi)的應(yīng)用。

假設(shè)你已經(jīng)將公網(wǎng)域名 yourdomain.com 解析到 Nginx 服務(wù)器上,Nginx 配置文件如下:

server {
    listen 80;
    server_name yourdomain.com;

    #http://yourdomain.com 轉(zhuǎn)發(fā)到 http://192.168.1.100:8080
    location / {
        proxy_pass http://192.168.1.100:8080;  # 將請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)網(wǎng)應(yīng)用
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    #http://yourdomain.com/nandao 轉(zhuǎn)發(fā)到 http://192.168.1.100:8080/nandao
    location /nandao {
        proxy_pass http://192.168.1.100:8080;  # 將請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)網(wǎng)應(yīng)用
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

   #http://yourdomain.com/nandao 轉(zhuǎn)發(fā)到 http://192.168.1.100:8080
   location /nandao {
        proxy_pass http://192.168.1.100:8080;  # 將請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)網(wǎng)應(yīng)用
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        rewrite ^/nandao/(.*) /$1 break;
    }
}

注意:http://192.168.1.100:8080 此地址在改服務(wù)器上可以 telnet 通。(服務(wù)器有內(nèi)網(wǎng)、外網(wǎng)、浮動(dòng)ip的區(qū)別)

2、API接口代理轉(zhuǎn)發(fā)

接著上面的流程:轉(zhuǎn)發(fā)到 nginx后 192.168.1.100:8080 ,前端頁(yè)面和后端接口

 server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
		
		location / { 
			root   html/build-jt-f/build-jt/web; #效果
            index  index.html index.htm;
        }
		
		 # 后臺(tái)請(qǐng)求接口轉(zhuǎn)發(fā)到接口地址
        location /nandao/url1Server {
            #add_header 'Access-Control-Allow-Origin' '*';
            #add_header 'Access-Control-Allow-Methods' 'POST,GET,OPTIONS';
            proxy_pass http://localhost:8888/;#或者是其他ip,其他此服務(wù)器里可以ping 通
			rewrite ^/nandao/url1Server/(.*) /$1 break;
        }
}

三、匹配規(guī)則

默認(rèn)匹配:

server {
    listen       8081;
    server_name  localhost;

    location / {
        root   html/build-jt-f/build-jt/web;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}

#?頁(yè)面訪問(wèn)地址http://localhost:8081/nandao/

沒(méi)有/nandao/ 模塊配置時(shí),請(qǐng)求會(huì)默認(rèn)匹配 location /,Nginx 會(huì)將 /nandao/ 轉(zhuǎn)發(fā)到 html/build-jt-f/build-jt/web/nandao/ 目錄下查找靜態(tài)文件。

server {
    listen       8081;
    server_name  localhost;

    location / {
        alias html/build-jt-f/build-jt/web;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}

如果是alias 參數(shù):

  • 使用 alias 指令時(shí),Nginx 會(huì)將請(qǐng)求路徑中的 /nandao/ 前綴替換為 alias 指定的路徑。
  • 指定了靜態(tài)文件的實(shí)際目錄,/nandao/ 前綴被移除,路徑變?yōu)?html/build-jt-f/build-jt/web/。

總結(jié)

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

相關(guān)文章

  • 使用goaccess分析nginx日志的詳細(xì)方法

    使用goaccess分析nginx日志的詳細(xì)方法

    goaccess 工具提供快速、多樣的HTTP狀態(tài)統(tǒng)計(jì),可以令管理員不再糾結(jié)于統(tǒng)計(jì)各類(lèi)數(shù)據(jù),和繁雜的指令以及一大堆管道/正則表達(dá)式說(shuō)再見(jiàn),今天通過(guò)本文給大家介紹goaccess 分析nginx 日志的方法,需要的朋友一起看看吧
    2021-07-07
  • nginx?Rewrite重寫(xiě)地址的實(shí)現(xiàn)

    nginx?Rewrite重寫(xiě)地址的實(shí)現(xiàn)

    本文主要介紹了nginx?Rewrite重寫(xiě)地址的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Linux搭建Nginx反向代理服務(wù)器的實(shí)戰(zhàn)指南

    Linux搭建Nginx反向代理服務(wù)器的實(shí)戰(zhàn)指南

    在現(xiàn)代Web架構(gòu)中,Nginx作為高性能的反向代理服務(wù)器,早已成為互聯(lián)網(wǎng)基礎(chǔ)設(shè)施的重要組成部分,本篇博客將從零開(kāi)始,帶你一步步在Linux系統(tǒng)上搭建一個(gè)完整的 Nginx 反向代理環(huán)境,并結(jié)合Java后端服務(wù)進(jìn)行實(shí)際演示,需要的朋友可以參考下
    2026-04-04
  • nginx 負(fù)載均衡的三種參數(shù)設(shè)置

    nginx 負(fù)載均衡的三種參數(shù)設(shè)置

    這篇文章主要介紹了nginx 負(fù)載均衡的三種參數(shù)設(shè)置,需要的朋友可以參考下
    2017-07-07
  • 詳解nginx 的 default_server 定義及匹配規(guī)則

    詳解nginx 的 default_server 定義及匹配規(guī)則

    這篇文章主要介紹了詳解nginx 的 default_server 定義及匹配規(guī)則,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 如何自定義Nginx JSON日志格式配置

    如何自定義Nginx JSON日志格式配置

    Nginx作為最流行的Web服務(wù)器之一,其靈活的日志配置能力允許我們根據(jù)需求定制日志格式,本文將詳細(xì)介紹如何配置Nginx以JSON格式記錄訪問(wèn)日志,這種結(jié)構(gòu)化日志格式特別適合ELK等日志分析系統(tǒng)處理,感興趣的朋友一起看看吧
    2025-03-03
  • 基于Nginx 反向代理獲取真實(shí)IP的問(wèn)題詳解

    基于Nginx 反向代理獲取真實(shí)IP的問(wèn)題詳解

    下面小編就為大家分享一篇基于Nginx 反向代理獲取真實(shí)IP的問(wèn)題詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • nginx中使用lua腳本的方法

    nginx中使用lua腳本的方法

    這篇文章主要介紹了nginx中使用lua腳本的方法,本文介紹通過(guò)第三方模塊lua-nginx-module實(shí)現(xiàn)lua腳本在nginx的調(diào)用,并附一個(gè)配置例子,需要的朋友可以參考下
    2014-07-07
  • 如何讓Nginx支持中文文件名具體設(shè)置步驟

    如何讓Nginx支持中文文件名具體設(shè)置步驟

    想讓Nginx支持中文文件名首先得讓你的系統(tǒng)有中語(yǔ)語(yǔ)言包,設(shè)置前可以執(zhí)行:locale 看一下,如果顯示是en_US.UTF-8,即是正常,不用按下面的步驟設(shè)置
    2013-06-06
  • Keepalived+Nginx雙機(jī)配置小結(jié)

    Keepalived+Nginx雙機(jī)配置小結(jié)

    本文主要介紹了Keepalived+Nginx雙機(jī)配置小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03

最新評(píng)論

肥城市| 岢岚县| 新和县| 江门市| 临安市| 防城港市| 萨嘎县| 仁化县| 贵德县| 宝坻区| 金溪县| 武隆县| 长垣县| 醴陵市| 阿合奇县| 百色市| 广南县| 临桂县| 修文县| 南召县| 漯河市| 含山县| 报价| 格尔木市| 沙湾县| 介休市| 南乐县| 育儿| 驻马店市| 安陆市| 白山市| 怀集县| 抚州市| 德昌县| 教育| 兴山县| 凤庆县| 三明市| 嘉峪关市| 海南省| 丹寨县|