nginx配置代理服務器

Nginx 作為代理服務器時,主要用于反向代理(最常用,轉發客戶端請求到后端服務)或正向代理(較少用,為客戶端提供訪問外部網絡的代理)。以下是兩種場景的具體配置示例:

一、反向代理配置(最常用)

反向代理是 Nginx 最核心的功能之一,用于將客戶端請求轉發到后端的應用服務器(如 Java、Node.js、Python 服務等),可隱藏后端服務地址、實現負載均衡、SSL 終結等。

基礎配置示例(代理單個后端服務)
# 全局配置
worker_processes auto; # 自動設置工作進程數(通常等于CPU核心數)
events {worker_connections 1024; # 每個工作進程的最大連接數
}http {include mime.types; # 引入MIME類型映射default_type application/octet-stream;# 反向代理核心配置server {listen 80; # 監聽80端口(HTTP)server_name example.com; # 代理服務器域名(客戶端訪問的域名)# 所有請求都轉發到后端服務location / {# 后端服務地址(協議://IP:端口,如Node.js服務、Java服務等)proxy_pass http://127.0.0.1:3000; # 傳遞客戶端真實IP和請求頭(重要)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;# 超時設置(按需調整)proxy_connect_timeout 60s; # 連接后端超時proxy_read_timeout 60s;    # 讀取后端響應超時proxy_send_timeout 60s;    # 發送請求到后端超時}}
}
配置說明:
  1. proxy_pass:指定后端服務地址(必須),格式為 協議://IP:端口協議://域名

    • 示例:proxy_pass http://127.0.0.1:3000 表示轉發到本地3000端口的服務。
    • 注意:proxy_pass 后是否帶 / 影響路徑拼接(見下方“路徑匹配規則”)。
  2. proxy_set_header:傳遞客戶端請求頭到后端,避免后端服務獲取不到真實客戶端信息(如 IP、Host)。

    • Host $host:傳遞客戶端訪問的域名(如 example.com)。
    • X-Real-IP $remote_addr:傳遞客戶端真實 IP。
  3. 超時設置:防止后端服務無響應時 Nginx 長期等待,避免連接泄露。

路徑匹配規則(proxy_pass/ vs 不帶 /
  • 場景1location /api + proxy_pass http://backend(不帶 /
    客戶端請求 http://example.com/api/user → 轉發到 http://backend/api/user(保留 /api 前綴)。

  • 場景2location /api + proxy_pass http://backend/(帶 /
    客戶端請求 http://example.com/api/user → 轉發到 http://backend/user(去掉 /api 前綴)。

高級:代理多個服務(按路徑區分)
server {listen 80;server_name example.com;# 1. 代理API服務(路徑以/api開頭)location /api {proxy_pass http://127.0.0.1:8080; # 后端API服務(如Java SpringBoot)proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}# 2. 代理前端靜態資源(路徑以/static開頭)location /static {proxy_pass http://127.0.0.1:8000; # 前端服務(如Node.js靜態服務器)proxy_set_header Host $host;}# 3. 其他請求默認返回404location / {return 404;}
}

二、正向代理配置(客戶端代理)

正向代理用于為客戶端提供訪問外部網絡的代理(如科學上網、客戶端IP隱藏),配置較少見。

http {# 正向代理核心配置server {listen 8888; # 客戶端需連接的代理端口# 允許客戶端通過代理訪問任意域名resolver 8.8.8.8; # DNS resolver(使用谷歌DNS解析外部域名)location / {# 正向代理到客戶端請求的目標地址proxy_pass http://$http_host$request_uri;# 支持HTTPS代理(需配置SSL隧道)proxy_connect_timeout 10s;proxy_send_timeout 10s;proxy_read_timeout 10s;}}
}
使用方式:

客戶端(如瀏覽器、curl)需手動設置代理為 http://代理服務器IP:8888,即可通過該代理訪問外部網絡。

三、配置SSL(HTTPS代理)

若需要代理 HTTPS 請求(客戶端通過 https://example.com 訪問),需配置 SSL 證書:

server {listen 443 ssl; # 監聽443端口(HTTPS)server_name example.com;# SSL證書配置(替換為實際證書路徑)ssl_certificate /path/to/cert.pem;   # 公鑰證書ssl_certificate_key /path/to/key.pem; # 私鑰# 代理到后端HTTP服務(Nginx終結SSL,后端用HTTP通信)location / {proxy_pass http://127.0.0.1:3000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}# 可選:HTTP自動跳轉到HTTPS
server {listen 80;server_name example.com;return 301 https://$host$request_uri;
}

四、配置檢查與生效

  1. 檢查配置是否正確

    nginx -t  # 輸出 "syntax is ok" 表示配置無誤
    
  2. 重啟Nginx生效

    nginx -s reload  # 平滑重啟(不中斷現有連接)
    

核心總結

  • 反向代理:用于服務器端轉發請求到后端服務,配置核心是 location + proxy_pass + 頭信息傳遞。
  • 正向代理:用于客戶端代理,需配置 resolver 和代理端口。
  • 注意路徑匹配規則和超時設置,生產環境建議配置 SSL 證書。

根據實際需求修改 server_nameproxy_pass 地址、端口和路徑即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93154.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93154.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93154.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL數據庫知識體系總結 20250813

一、數據庫的原理 1.數據庫的分類 我們可以根據數據的結構類型,將數據分成三類,分別是:結構化數據,半結構化數據,非結構化數據。 要點:對于結構化數據來講通常是先有結構再有數據。要點:對于半…

C++ 中構造函數參數對父對象的影響:父子控件管理機制解析

文章目錄C 中構造函數參數對父對象的影響:父子控件管理機制解析1. Qt 中的父對象管理機制2. 構造函數傳遞父對象的不同方式2.1. 父控件是 QWidget parent(通用方式)分析:2.2. 父控件是 Books_Client parent(限制父控件…

直播美顏SDK開發實戰:高性能人臉美型的架構與實現

在直播行業里,美顏已經不再是錦上添花,而是標配中的標配。無論是游戲主播、帶貨達人,還是唱歌、跳舞的才藝主播,直播美顏SDK往往決定了用戶的第一印象和停留時長。尤其是高性能人臉美型技術,不僅能讓主播的五官更加自然…

JavaWeb(蒼穹外賣)--學習筆記18(Apache POI)

前言 本篇文章是學習B站黑馬程序員蒼穹外賣的學習筆記📑。我的學習路線是Java基礎語法-JavaWeb-做項目,管理端的功能學習完之后,就進入到了用戶端微信小程序的開發,用戶端開發的流程大致為用戶登錄—商品瀏覽(其中涉及…

OpenJDK 17 源碼 安全點輪詢的信號處理流程

OpenJDK 17 源碼,安全點輪詢的信號處理流程如下(重點分析安全點輪詢相關部分):核心信號處理流程信號觸發:當線程訪問安全點輪詢內存頁時(SafepointMechanism::is_poll_address),會觸…

InfluxDB 在工業控制系統中的數據監控案例(一)

工業控制系統數據監控的重要性**在工業領域,生產過程的復雜性和連續性使得數據監控成為保障生產穩定運行的關鍵環節。通過實時收集、處理和分析生產數據,企業能夠及時掌握設備運行狀態、產品質量信息以及生產流程的各項參數,從而為生產決策提…

嵌入式學習(day26)frambuffer幀緩沖

一、UI技術: User interface(1)framebuffer: 幀緩沖、幀緩存技術 Linux內核專門為圖形化顯示提供的一套應用程序接口。流程如下:1. 打開顯示設備 (/dev/fb0) 2. 獲取顯示設備相關參數(分辨率,像素格式)---》…

408每日一題筆記 41-50

答案:A 解析:CSMA/CD 協議里,“爭用期” 就是信號在總線上最遠兩個端點之間往返傳輸的時間,也叫沖突窗口,選 A。

【物聯網】基于樹莓派的物聯網開發【26】——樹莓派開啟串口并配置串口助手Minicom

串口配置 (1)打開串口,終端輸入命令: sudo raspi-config (2)串口設置選擇Interfacing Options→Serial port→No→Yes→ok(3)設置開啟,打開串口 (4&#xff0…

考研/考公知識共享平臺的設計與實現-項目分享

考研/考公知識共享平臺的設計與實現-項目分享項目介紹項目摘要學生前臺用例圖管理員用例圖系統流程圖系統功能結構圖實體圖學生信息實體圖資料信息管理實體圖報考指南管理寫在最后項目介紹 使用者:管理員、學生前臺、學生后臺 開發技術:MySQLJavaSpring…

一鍵設置 NTP 時區的腳本(親測,適用于部署 K8S 的前置環境)

文章目錄一、時區和時間同步的配置命令二、完整腳本ntp_timezone_setup.sh三、使用方法3.1、創建腳本3.2、賦予執行權限3.3、運行腳本3.4、驗證一、時區和時間同步的配置命令 整理用于做時區和時間同步的配置幾條命令分別如下: 1?? 編輯 chrony 配置 vim /etc/…

BPMN編輯器技術實現總結AI時代的工作流編輯器

項目概述 基于 diagram.js 的 BPMN 流程設計器,通過依賴注入(DI)實現模塊化擴展,自定義模塊擴展與SVG圖形渲染。后端工作流引擎自定義統一任務調度函數,實現異構模型統一調用。 核心技術架構 1. diagram.js 架構基礎 核心模塊組成 Canv…

兩階段最小二乘法(2SLS)與 工具變量(IV)模型

以下是關于兩階段最小二乘法(2SLS)與工具變量(IV)模型關系的系統解析,結合計量經濟學理論與論文上下文進行說明:一、核心關系:2SLS是IV模型的實現方法 1. IV模型:解決內生性的理論框…

熬夜面膜賽道跑出的新物種

在快節奏的現代生活中,熬夜已成為都市人群的常態,深夜11點后的朋友圈總是一片“失眠”哀嚎。隨之而來的是“熬夜肌”問題的激增——暗沉、干燥、屏障受損等訴求催生了龐大的熬夜面膜市場。2025年,中國面膜線上規模已達484億元,其中…

20250813測試開發崗(涼)面

1. 自我介紹2. 你如何理解測開,你認為測開的工作有哪些3. 測試的時候包括哪些部分4. 就功能層面,你認為需要從那些部分考慮,形成一個完整并可執行的trace(是這個詞吧)5. 你了解數據庫嗎(我說只會比較基礎的…

面向Python/C#開發者入門Java與Bukkit API

本教程將以"手持發射器箭矢機槍"功能為例,帶你掌握Java語言基礎和Bukkit API的核心概念,最終實現自主開發插件。 我們將通過剖析一個實際Java代碼文件,逐步解析其運作機制,幫助你順利將現有編程知識遷移到Java和Bukkit…

從100到0.3美元:GPT-5用價格戰血洗大模型賽道

————————— 一、從 100 美元到 0.3 美元:史無前例的效率革命 ————————— 互聯網女王 Mary Meeker 在《AI 趨勢報告 2025》里寫下這組數字: ? 訓練成本 8 年飆升 2400 倍; ? 推理成本 2 年暴跌 99.7%。OpenAI 把“暴跌”推到…

第三十二天(文件操作安全)

文件遍歷上傳下載刪除編輯包含等 $_FILES:PHP中一個預定義的超全局變量,用于在上傳文件時從客戶端接收文件,并將其保存到服務器上。它是一個包含上傳文件信息的數組,包括文件名、類型、大小、臨時文件名等信息。 $_FILES"表…

系統集成項目管理工程師【第十一章 規劃過程組】規劃風險應對、規劃采購管理篇

系統集成項目管理工程師【第十一章 規劃過程組】規劃風險應對、規劃采購管理篇 一、規劃風險應對:為項目穿上"防護衣" 1. 什么是規劃風險應對? 規劃風險應對是基于風險量化分析結果,制定可選方案、選擇應對策略并商定具體行動的過程…

20250813比賽總結

題目T1.volumeT2.storyT3.treeT4.game預計分數6060030實際分數306000T1.volume 確實是暴力,但我是用數組統計每個可能出現的數,于是3AC 3WA 4TLE。拿到全部分應該直接按照題目模擬。 T2.story 暴力dfs,由于忘記優化所以60pts,而且…