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

Nginx反向代理配置React前端與Python后端全過(guò)程

 更新時(shí)間:2026年02月02日 08:28:33   作者:展菲  
前后端分離項(xiàng)目里,前端通常是 React 打包后的靜態(tài)資源,后端是 Python(FastAPI/Flask)提供的 API,生產(chǎn)環(huán)境一般用 Nginx 做統(tǒng)一入口,本文只講 Nginx 反向代理的核心配置思路和關(guān)鍵片段,需要的朋友可以參考下

前言

前后端分離項(xiàng)目里,前端通常是 React 打包后的靜態(tài)資源,后端是 Python(FastAPI/Flask)提供的 API。生產(chǎn)環(huán)境一般用 Nginx 做統(tǒng)一入口:對(duì)外只暴露 80/443,靜態(tài)資源由 Nginx 直接返回,/api 等路徑轉(zhuǎn)發(fā)到后端進(jìn)程,這樣既能隱藏后端端口、又便于做 HTTPS 和緩存。

本文只講 Nginx 反向代理的核心配置思路和關(guān)鍵片段,不貼完整可運(yùn)行 Demo,便于快速接入和排查問(wèn)題。

整體架構(gòu)

客戶(hù)端 → Nginx:80/443
           ├── /         → 靜態(tài)資源(React build 目錄)
           └── /api      → 反向代理到 Python 后端(如 127.0.0.1:8000)
  • 前端:npm run build 后得到 build(或 dist)目錄,配置 Nginx 的 root 指向該目錄。
  • 后端:用 Gunicorn/Uvicorn 監(jiān)聽(tīng)本機(jī)端口(如 8000),只對(duì)本機(jī)開(kāi)放;Nginx 用 proxy_pass/api 轉(zhuǎn)到該端口。

基礎(chǔ) server 與靜態(tài)資源

在 Nginx 的 conf.dsites-available 下新建一個(gè) server 塊,例如:

server {
    listen 80;
    server_name your-domain.com;

    # 前端靜態(tài)資源
    root /var/www/app/frontend/build;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

要點(diǎn):

  • root:指向 React 打包后的目錄,請(qǐng)求 //xxx 時(shí),Nginx 會(huì)先找對(duì)應(yīng)文件,找不到再找目錄,最后回退到 index.html,這樣前端的 React Router 才能正確處理瀏覽器直接訪(fǎng)問(wèn)或刷新子路徑。
  • try_files$uri 表示先找同名文件,$uri/ 表示找同名目錄下的默認(rèn)頁(yè),最后 /index.html 交給 SPA 自己路由。

反向代理 /api 到 Python 后端

在同一個(gè) server 里增加 location /api

location /api {
    proxy_pass http://127.0.0.1:8000;
    proxy_http_version 1.1;
    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;
}

要點(diǎn):

  • proxy_pass:后端實(shí)際監(jiān)聽(tīng)地址,若后端是 http://127.0.0.1:8000,且后端路由是 /api/xxx,這里寫(xiě) http://127.0.0.1:8000 即可;若后端根路徑是 /,則前端應(yīng)請(qǐng)求 /api/xxx,Nginx 會(huì)把 /api/xxx 原樣轉(zhuǎn)給后端,后端需掛載在 /api 下(如 FastAPI 的 app = FastAPI(prefix="/api"))或做路徑重寫(xiě)。
  • X-Forwarded-Proto:若前面還有 HTTPS 終結(jié),后端需要知道原始協(xié)議時(shí),設(shè)為 $scheme,后端可信任該頭做跳轉(zhuǎn)或生成 URL。
  • Host:后端若按 Host 做虛擬主機(jī)或校驗(yàn),應(yīng)傳原始 Host。

路徑是否帶 /api 的兩種寫(xiě)法

方式一:前端請(qǐng)求 /api/xxx,后端也以 /api 為前綴

  • 前端:axios.get('/api/users')
  • Nginx:location /api { proxy_pass http://127.0.0.1:8000; }(注意末尾無(wú)斜杠)
  • 轉(zhuǎn)發(fā)到后端的請(qǐng)求路徑仍是 /api/users,后端需掛載在 /api,例如 FastAPI:app = FastAPI(prefix="/api")

方式二:后端根路徑是 /,Nginx 做 strip

  • Nginx:location /api/ { proxy_pass http://127.0.0.1:8000/; }(注意兩邊都有斜杠)
  • 請(qǐng)求 /api/users 會(huì)被轉(zhuǎn)成 http://127.0.0.1:8000/users,后端只需掛載 /users 等路由。

按你們前后端約定選一種即可,關(guān)鍵是 proxy_pass 末尾有沒(méi)有斜杠、以及后端路由前綴要一致。

超時(shí)與 body 大小

若接口有上傳或長(zhǎng)耗時(shí),可適當(dāng)增大超時(shí)和 body 限制:

location /api {
    proxy_pass http://127.0.0.1:8000;
    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
    client_max_body_size 20M;
    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;
}

HTTPS 與 80 跳轉(zhuǎn)

正式環(huán)境建議全站 HTTPS。用 Certbot 申請(qǐng)證書(shū)后,可保留 80 僅做跳轉(zhuǎn):

server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name your-domain.com;
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    root /var/www/app/frontend/build;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
    location /api {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

常見(jiàn)問(wèn)題

現(xiàn)象可能原因處理思路
刷新子路徑 404SPA 未回退到 index.html檢查 try_files 最后是否指向 /index.html
接口 502后端未啟動(dòng)或端口不對(duì)確認(rèn) Gunicorn/Uvicorn 監(jiān)聽(tīng)地址與 proxy_pass 一致
接口 404路徑前綴不一致對(duì)照前端請(qǐng)求路徑、Nginx proxy_pass 末尾斜杠、后端 prefix
上傳大文件失敗body 超限或超時(shí)增大 client_max_body_size 與 proxy_*_timeout

總結(jié)

Nginx 反向代理前后端分離項(xiàng)目:靜態(tài)資源用 root + try_files 指向 React build 目錄并回退到 index.html;/apiproxy_pass 轉(zhuǎn)到 Python 后端,并設(shè)置 Host、X-Real-IP、X-Forwarded-Proto 等頭。注意 proxy_pass 末尾斜杠與后端路由前綴一致,按需調(diào)整超時(shí)與 body 大小,生產(chǎn)環(huán)境配合 HTTPS 與 80 跳轉(zhuǎn)即可。

以上就是Nginx反向代理配置React前端與Python后端全過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于Nginx反向代理配置React與Python的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Nginx實(shí)現(xiàn)外網(wǎng)訪(fǎng)問(wèn)內(nèi)網(wǎng)的步驟詳解

    Nginx實(shí)現(xiàn)外網(wǎng)訪(fǎng)問(wèn)內(nèi)網(wǎng)的步驟詳解

    外網(wǎng)瀏覽器與內(nèi)網(wǎng)是不通的,但是外網(wǎng)與中間過(guò)渡服務(wù)器是通的,中間過(guò)渡服務(wù)器與內(nèi)網(wǎng)服務(wù)器是通的,這樣在外網(wǎng)訪(fǎng)問(wèn)過(guò)渡服務(wù)器時(shí),過(guò)渡服務(wù)器再跳轉(zhuǎn)到后臺(tái)服務(wù)器,本文給大家介紹了Nginx外網(wǎng)訪(fǎng)問(wèn)內(nèi)網(wǎng)如何實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2023-10-10
  • Nginx+iptables屏蔽訪(fǎng)問(wèn)Web頁(yè)面過(guò)于頻繁的IP(防DDOS,惡意訪(fǎng)問(wèn),采集器)

    Nginx+iptables屏蔽訪(fǎng)問(wèn)Web頁(yè)面過(guò)于頻繁的IP(防DDOS,惡意訪(fǎng)問(wèn),采集器)

    通過(guò)分析nginx的日志來(lái)過(guò)濾出訪(fǎng)問(wèn)過(guò)于頻繁的IP地址,然后添加到nginx的blockip.conf,并重啟nginx.
    2010-11-11
  • nginx實(shí)現(xiàn)負(fù)載均衡與實(shí)例解讀

    nginx實(shí)現(xiàn)負(fù)載均衡與實(shí)例解讀

    這篇文章主要介紹了nginx實(shí)現(xiàn)負(fù)載均衡與實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Nginx 502 Bad Gateway錯(cuò)誤原因及解決方案

    Nginx 502 Bad Gateway錯(cuò)誤原因及解決方案

    這篇文章主要介紹了Nginx 502 Bad Gateway錯(cuò)誤原因及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 通過(guò)Nginx代理轉(zhuǎn)發(fā)配置實(shí)現(xiàn)跨域的方法(API代理轉(zhuǎn)發(fā))

    通過(guò)Nginx代理轉(zhuǎn)發(fā)配置實(shí)現(xiàn)跨域的方法(API代理轉(zhuǎn)發(fā))

    這篇文章主要給大家介紹了關(guān)于如何通過(guò)Nginx代理轉(zhuǎn)發(fā)配置實(shí)現(xiàn)跨域(API代理轉(zhuǎn)發(fā))的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Nginx中proxy_pass的斜杠的兩種方式

    Nginx中proxy_pass的斜杠的兩種方式

    Nginx的官方文檔將proxy_pass分為不帶URI和帶URI兩種類(lèi)型,本文就來(lái)介紹Nginx中proxy_pass的斜杠的兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Nginx輕松解決跨域問(wèn)題的過(guò)程詳解

    Nginx輕松解決跨域問(wèn)題的過(guò)程詳解

    當(dāng)你遇到跨域問(wèn)題,不要立刻就選擇復(fù)制去嘗試,請(qǐng)?jiān)敿?xì)看完這篇文章再處理 ,本文給大家詳細(xì)介紹了Nginx如何輕松搞定跨域問(wèn)題,文中通過(guò)代碼示例額和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Nginx跨域設(shè)置Access-Control-Allow-Origin無(wú)效的解決辦法

    Nginx跨域設(shè)置Access-Control-Allow-Origin無(wú)效的解決辦法

    今天小編就為大家分享一篇關(guān)于Nginx跨域設(shè)置Access-Control-Allow-Origin無(wú)效的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • 使用Nginx搭建文件服務(wù)器及實(shí)現(xiàn)文件服務(wù)的步驟

    使用Nginx搭建文件服務(wù)器及實(shí)現(xiàn)文件服務(wù)的步驟

    Nginx是輕巧、高效的Web服務(wù)器,用作文件服務(wù)器非常合適,但是需要一些高級(jí)功能,如FTP遠(yuǎn)程訪(fǎng)問(wèn)、多用戶(hù)管理,可能需要選擇更為復(fù)雜的方案,例如Apache或FileZilla Server,這篇文章主要介紹了詳解如何使用Nginx搭建文件服務(wù)器及實(shí)現(xiàn)文件服務(wù),需要的朋友可以參考下
    2024-01-01
  • Nginx 502 Bad Gateway錯(cuò)誤常見(jiàn)的4種原因和解決方法

    Nginx 502 Bad Gateway錯(cuò)誤常見(jiàn)的4種原因和解決方法

    這篇文章主要介紹了Nginx 502 Bad Gateway錯(cuò)誤常見(jiàn)的4種原因和解決方法,本文適用FastCGI環(huán)境,其中多數(shù)原因通過(guò)配置相關(guān)參數(shù)即可解決,需要的朋友可以參考下
    2015-05-05

最新評(píng)論

临漳县| 阳信县| 汨罗市| 巴东县| 浦东新区| 商河县| 正阳县| 佛学| 建始县| 光山县| 新晃| 鄢陵县| 禹州市| 镇宁| 鸡东县| 嘉禾县| 红桥区| 通州市| 林州市| 丹江口市| 滨海县| 诸暨市| 福州市| 华坪县| 乌拉特中旗| 蓝田县| 五寨县| 德令哈市| 青冈县| 池州市| 克东县| 绥芬河市| 图们市| 建平县| 边坝县| 平利县| 昂仁县| 资兴市| 外汇| 安顺市| 卢湾区|