" />

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

nginx代理前端請求的實現(xiàn)示例

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

一,項目配置

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

這是 axios 的配置:

import axios from 'axios';

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


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

        return config;
    },
    error => {
        // 對請求錯誤做些什么
        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)出錯'))
        }
    },

    function (error) {
        // 對響應(yīng)錯誤做點什么

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

export default request

這是頁面中的請求:

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 的機器上啟動 expressjs 開發(fā)的后端項目 192.168.31.45:3000:

app.get('/api/getNumbers', (req, res) => {
    // 生成兩個隨機數(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 將前端的請求代理到后端,下面將介紹 nginx 需要怎樣配置以及具體原理。

二,配置 nginx

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

在開發(fā)機器(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請求
        location /api {
            proxy_pass http://192.168.31.45:3000;	# 后端項目運行的地址

            # 可選:如果后端接口路徑不包含/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		 # 檢查配置語法
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		# 啟動nginx

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

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

三,Nginx 代理原理

反向代理的作用:

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

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

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

關(guān)鍵配置解釋

location /api:匹配所有以 /api 開頭的請求路徑。

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

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

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

為什么這樣配置?

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

驗證配置是否生效:

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    nginx反向代理webSocket配置詳解

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

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

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

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

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

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

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

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

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

最新評論

特克斯县| 昭觉县| 区。| 碌曲县| 成武县| 黔东| 新昌县| 靖西县| 时尚| 古交市| 石林| 常熟市| 方正县| 凤凰县| 南康市| 睢宁县| 白河县| 兴海县| 沾益县| 广河县| 台北市| 彝良县| 贡嘎县| 海口市| 乐安县| 南平市| 关岭| 沾益县| 永泰县| 临猗县| 芦山县| 高邮市| 博湖县| 临邑县| 麻栗坡县| 永胜县| 二连浩特市| 陇西县| 广汉市| 金坛市| 鹤岗市|