" />

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

nginx代理前端請(qǐng)求的實(shí)現(xiàn)示例

 更新時(shí)間:2026年01月16日 10:07:23   作者:dangfulin  
本文介紹了在Vue3項(xiàng)目中使用Axios調(diào)用后端接口,并通過(guò)Nginx進(jìn)行反向代理以解決跨域問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一,項(xiàng)目配置

我在 ip 為 192.168.31.177 的機(jī)器上使用 vue3 開發(fā)前端項(xiàng)目,項(xiàng)目中使用 axios 調(diào)用后端接口。

這是 axios 的配置:

import axios from 'axios';

const request = axios.create({
    baseURL: 'http://192.168.31.177:8001',
    // 設(shè)置請(qǐng)求頭
    headers: {},
    // 設(shè)置超時(shí)時(shí)間
    timeout: 2000,
});


// 請(qǐng)求攔截器
request.interceptors.request.use(
    config => {
        // 在發(fā)送請(qǐng)求之前做些什么

        return config;
    },
    error => {
        // 對(duì)請(qǐng)求錯(cuò)誤做些什么
        return Promise.reject(error);
    }
);

// 響應(yīng)攔截器
request.interceptors.response.use(
    response => {
        if (response) {
            // 響應(yīng)數(shù)據(jù)為二進(jìn)制流處理(數(shù)據(jù)導(dǎo)出)
            if (response.data.data instanceof Blob) {
                return response
            }

            const {code, msg} = response.data
            if (code === 200) {
                return Promise.resolve(response.data)
            } else {
                return Promise.resolve(response)
            }
        } else {
            return Promise.reject(new Error('系統(tǒng)出錯(cuò)'))
        }
    },

    function (error) {
        // 對(duì)響應(yīng)錯(cuò)誤做點(diǎn)什么

        // 比如:根據(jù)響應(yīng)狀態(tài)碼,做不同的響應(yīng)處理
        console.log(error)
        return Promise.reject(error)
    }
)

export default request

這是頁(yè)面中的請(qǐng)求:

axios.get('/api/getNumbers')
        .then(res => {
            ElMessage({
                message: res.msg,
                type: 'success'
            })
        }).catch(err => {
            ElMessage({
                message: err,
                type: 'error'
            })
        })

這是 package.json 中的配置:

  "scripts": {
    "dev": "vite --host 192.168.31.177",
    "build": "vite build",
    "preview": "vite preview"
  }

然后在 ip 為 192.168.31.45 的機(jī)器上啟動(dòng) expressjs 開發(fā)的后端項(xiàng)目 192.168.31.45:3000:

app.get('/api/getNumbers', (req, res) => {
    // 生成兩個(gè)隨機(jī)數(shù)
    const number1 = Math.floor(Math.random() * 100);
    const number2 = Math.floor(Math.random() * 100);
    res.json({
        code: 200,
        msg: '成功!',
        data: {
            "a": number1,
            "b": number2,
        }
    });
});

現(xiàn)在想使用 nginx 將前端的請(qǐng)求代理到后端,下面將介紹 nginx 需要怎樣配置以及具體原理。

二,配置 nginx

前端項(xiàng)目運(yùn)行在 192.168.31.177(開發(fā)機(jī)器),后端運(yùn)行在 192.168.31.45:3000,Nginx 需要配置為反向代理,將前端請(qǐng)求轉(zhuǎn)發(fā)到后端。

在開發(fā)機(jī)器(192.168.31.177)上 Nginx 的配置文件(nginx.conf):

http {
    server {
        listen 8001;                # Nginx 監(jiān)聽的端口,前端 axios 中配置的 端口
        server_name 192.168.31.177; # 前端 axios 中配置的 IP

        location / {
            try_files $uri $uri/ /index.html; # 支持Vue路由的history模式
        }

        # 代理后端API請(qǐng)求
        location /api {
            proxy_pass http://192.168.31.45:3000;	# 后端項(xiàng)目運(yùn)行的地址

            # 可選:如果后端接口路徑不包含/api,移除前綴
            # rewrite ^/api/(.*) /$1 break;

            # 添加必要的代理頭信息
            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;
        }
    }
}

配置完成后執(zhí)行:

G:\nginx-1.24.0>nginx -t		 # 檢查配置語(yǔ)法
nginx: the configuration file G:\nginx-1.24.0/conf/nginx.conf syntax is ok
nginx: configuration file G:\nginx-1.24.0/conf/nginx.conf test is successful

G:\nginx-1.24.0>start nginx		# 啟動(dòng)nginx

G:\nginx-1.24.0>nginx -s reload # 不停止,重新加載
  • 打開【任務(wù)管理器——進(jìn)程,搜索 nginx,可以看到兩個(gè)進(jìn)程,說(shuō)明 nginx 正確啟動(dòng)。

啟動(dòng)前端項(xiàng)目,訪問(wèn) http://192.168.31.177:5173/。打開頁(yè)面后調(diào)用接口,獲取到接口數(shù)據(jù)。

三,Nginx 代理原理

反向代理的作用:

請(qǐng)求轉(zhuǎn)發(fā):Nginx 監(jiān)聽前端請(qǐng)求(如 http://192.168.31.177:8080/api/getNumbers),并將匹配 /api 的請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器 http://192.163.109.134:3000。

隱藏后端細(xì)節(jié):前端無(wú)需知道后端地址,只需與 Nginx 通信。

解決跨域:瀏覽器認(rèn)為請(qǐng)求是同源的(都是 http://192.168.31.177:8080),實(shí)際由 Nginx 轉(zhuǎn)發(fā)到不同域的后端。

關(guān)鍵配置解釋

location /api:匹配所有以 /api 開頭的請(qǐng)求路徑。

proxy_pass:將匹配的請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器。

proxy_set_header:設(shè)置請(qǐng)求頭,確保后端能獲取客戶端的真實(shí) IP 和協(xié)議信息。

add_header:添加 CORS 響應(yīng)頭,顯式允許跨域(可選,如果代理已解決跨域,可能不需要)。

為什么這樣配置?

  1. 解決跨域問(wèn)題:瀏覽器默認(rèn)禁止跨域請(qǐng)求,但通過(guò) Nginx 代理:前端請(qǐng)求發(fā)送到 http://192.168.31.177:8080/api(同源)。Nginx 將請(qǐng)求轉(zhuǎn)發(fā)到 http://192.163.109.134:3000/api,后端響應(yīng)通過(guò) Nginx 返回前端。瀏覽器認(rèn)為請(qǐng)求是“同源”的,不會(huì)觸發(fā)跨域限制。
  2. 靈活的路由控制:可以按路徑(如 /api)或域名分發(fā)請(qǐng)求。
  3. 支持負(fù)載均衡、緩存等高級(jí)功能(開發(fā)階段可能不需要)。
  4. 統(tǒng)一入口:前端和后端通過(guò)同一個(gè)端口(如 8080)通信,簡(jiǎn)化開發(fā)配置。

驗(yàn)證配置是否生效:

  1. 在瀏覽器中訪問(wèn)后端 API http://192.163.109.134:3000/api/getNumbers,確保后端正常返回?cái)?shù)據(jù)。
  2. 通過(guò) Nginx 訪問(wèn) API http://192.168.31.177:8080/api/getNumbers,檢查是否返回相同數(shù)據(jù)。
  3. 檢查看 Nginx 的訪問(wèn)日志和錯(cuò)誤日志,確認(rèn)請(qǐng)求是否被正確轉(zhuǎn)發(fā)。
  4. Nginx 未啟動(dòng)或配置錯(cuò)誤問(wèn)題排查
    status nginx 檢查服務(wù)狀態(tài)。
    nginx -t 檢查配置語(yǔ)法。
    

到此這篇關(guān)于nginx代理前端請(qǐng)求的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)nginx代理前端請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • keepalived+lvs 對(duì)nginx做負(fù)載均衡和高可用的操作方法

    keepalived+lvs 對(duì)nginx做負(fù)載均衡和高可用的操作方法

    這篇文章主要介紹了keepalived+lvs 對(duì)nginx做負(fù)載均衡和高可用的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • Nginx靜態(tài)資源或者路徑鑒權(quán)方式

    Nginx靜態(tài)資源或者路徑鑒權(quán)方式

    這篇文章主要介紹了Nginx靜態(tài)資源或者路徑鑒權(quán)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx通過(guò)header中的標(biāo)識(shí)進(jìn)行分發(fā)

    Nginx通過(guò)header中的標(biāo)識(shí)進(jìn)行分發(fā)

    本文主要介紹了Nginx通過(guò)header中的標(biāo)識(shí)進(jìn)行分發(fā),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Nginx Stream模塊詳細(xì)攻略(四層代理的藝術(shù)與實(shí)踐)

    Nginx Stream模塊詳細(xì)攻略(四層代理的藝術(shù)與實(shí)踐)

    Nginx Stream模塊是1.9.0版本引入的,用于處理TCP/UDP流量,提供四層網(wǎng)絡(luò)代理功能,與HTTP模塊相比,Stream模塊工作在傳輸層,不解析應(yīng)用協(xié)議,本文給大家介紹Nginx Stream模塊完全指南:四層代理的藝術(shù)與實(shí)踐,感興趣的朋友一起看看吧
    2025-12-12
  • Nginx限制IP訪問(wèn)的實(shí)現(xiàn)示例

    Nginx限制IP訪問(wèn)的實(shí)現(xiàn)示例

    限制某些IP地址訪問(wèn)網(wǎng)站是一個(gè)常見的需求,本文主要介紹了Nginx限制IP訪問(wèn)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • nginx反向代理webSocket配置詳解

    nginx反向代理webSocket配置詳解

    這篇文章主要介紹了nginx反向代理webSocket配置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • NGINX基于cookie針對(duì)同一域名進(jìn)行分流轉(zhuǎn)發(fā)

    NGINX基于cookie針對(duì)同一域名進(jìn)行分流轉(zhuǎn)發(fā)

    本文介紹了利用NGINX基于cookie進(jìn)行多環(huán)境分流的方法,通過(guò)在Docker中部署兩個(gè)后端NGINX容器,并在前端NGINX配置中設(shè)置map規(guī)則,根據(jù)cookie值將請(qǐng)求分發(fā)到不同后端,感興趣的可以了解一下
    2025-07-07
  • Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻

    Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻

    Nginx?Proxy?Manager是一款功能強(qiáng)大的開源軟件,配置Web應(yīng)用防火墻,可以防止常見的web攻擊,本文就來(lái)介紹一下Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻,感興趣的可以了解一下
    2025-02-02
  • 在Nginx服務(wù)器上安裝SSL證書完成HTTPS請(qǐng)求的步驟詳解(springboot項(xiàng)目)

    在Nginx服務(wù)器上安裝SSL證書完成HTTPS請(qǐng)求的步驟詳解(springboot項(xiàng)目)

    這篇文章主要介紹了在Nginx服務(wù)器上安裝SSL證書完成HTTPS請(qǐng)求(springboot項(xiàng)目),首先需要下載證書到本地接著在Nginx獨(dú)立服務(wù)器上安裝證書,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-04-04
  • Nginx為Tomcat服務(wù)器作反向代理的配置教程

    Nginx為Tomcat服務(wù)器作反向代理的配置教程

    這篇文章主要介紹了Nginx為Tomcat服務(wù)器作反向代理的配置教程,文中以Windows系統(tǒng)為環(huán)境來(lái)演示驅(qū)動(dòng)JSP程序的示例,需要的朋友可以參考下
    2016-03-03

最新評(píng)論

阿巴嘎旗| 上林县| 青海省| 白银市| 内黄县| 淮安市| 利辛县| 常德市| 鹤壁市| 昌图县| 望都县| 新闻| 盐山县| 舟山市| 晋中市| 和硕县| 清远市| 无锡市| 富平县| 保康县| 贵阳市| 浦江县| 新蔡县| 吉木乃县| 通江县| 申扎县| 广水市| 镇远县| 丹巴县| 包头市| 昭觉县| 泸水县| 蒙自县| 新乐市| 如皋市| 象山县| 教育| 镇江市| 黎平县| 凯里市| 綦江县|