LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Nginx 實戰: 什么是反向代理,如何配置

admin
2025年7月19日 23:21 本文熱度 379

在互聯網的龐大架構中,Nginx 作為一款高性能的 Web 服務器和反向代理服務器,發揮著至關重要的作用。其中,反向代理功能更是 Nginx 被廣泛應用的核心原因之一。本文將深入探討什么是反向代理,以及如何在 Nginx 中進行反向代理的配置。

一、反向代理的概念與原理

反向代理的定義

反向代理是指以代理服務器來接受 Internet 上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給 Internet 上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。

正向代理 vs 反向代理

我們先來簡單對比一下正向代理與反向代理的區別:

類型誰隱藏使用場景示例
正向代理
客戶端
用戶訪問外部資源時隱藏自己
翻墻代理、公司上網代理
反向代理
服務端
外部用戶訪問內部服務時隱藏后端
CDN、負載均衡、Web 服務器

反向代理的核心思想是:客戶端不知道真正的服務器是誰,所有請求都先發給反向代理服務器,由它轉發到后端真實服務器,并將結果返回給客戶端。

反向代理的作用

  • 負載均衡:當有大量客戶端請求到達時,反向代理服務器可以根據預設的算法,將請求分發到不同的后端服務器上,避免單個服務器負載過高,提高整個系統的處理能力和穩定性 。
  • 安全性提升:隱藏后端真實服務器的 IP 地址,使客戶端無法直接與后端服務器通信,降低了后端服務器遭受攻擊的風險。同時,反向代理服務器還可以對請求進行過濾和驗證,攔截惡意請求,如 SQL 注入、跨站腳本攻擊(XSS)等。
  • 緩存加速:反向代理服務器可以緩存后端服務器返回的靜態資源(如圖片、CSS、JavaScript 文件等)和動態內容。當有相同的請求再次到達時,直接從緩存中返回數據,減少了后端服務器的壓力,也加快了客戶端獲取數據的速度,提升用戶體驗。
  • 服務高可用:當某一臺后端服務器出現故障時,反向代理服務器可以自動將請求轉發到其他正常運行的服務器上,保證服務的連續性,實現服務的高可用性。
  • 統一入口:對外提供一個統一的訪問地址,便于管理。

反向代理的工作原理

客戶端向反向代理服務器發送請求,反向代理服務器根據配置的規則(如請求的 URL、客戶端 IP 地址等),將請求轉發到合適的后端服務器。后端服務器處理請求后,將響應結果返回給反向代理服務器,反向代理服務器再將響應結果返回給客戶端。整個過程中,客戶端并不知道真正處理請求的后端服務器是誰,它只與反向代理服務器進行交互。

二、Nginx 反向代理的配置

基本反向代理配置

假設你有一個運行在服務器端口為 3000 的服務,現在想通過域名 http://api.example.com 訪問這個服務。

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

說明

  • listen 80:表示 Nginx 監聽 80 端口。
  • server_name:指定域名,若沒有域名或通過 IP 訪問,可忽略此配置。
  • location / :定義請求的 URL 匹配規則,這里表示所有請求都將被代理到后端服務器。
  • proxy_pass:指定后端服務器的地址和端口。
  • proxy_set_header:設置請求頭,用于傳遞原始信息給后端,例如:Host表示傳遞原始請求的域名,X-Real-IP表示獲取客戶端真實IP,X-Forwarded-For表示傳遞完整的代理路徑,X-Forwarded-Proto表示傳遞后端請求使用的協議。

基于 URL 的反向代理配置

有時候,我們可能希望根據不同的 URL 將請求轉發到不同的后端服務器。例如,將以/api開頭的請求轉發到一個 API 服務器,將其他請求轉發到另一個 Web 服務器。

server {
    listen 80;
    server_name your_domain.com;

    location /api {
        proxy_pass http://api_server_ip:port;  # API服務器地址和端口
        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;
    }

    location / {
        proxy_pass http://web_server_ip:port;  # Web服務器地址和端口
        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;
    }
}

添加 SSL 支持(HTTPS)

如果你有 SSL 證書(比如 Let's Encrypt),可以添加 HTTPS 支持:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

負載均衡配置

Nginx 支持多種負載均衡算法,如輪詢(默認)、加權輪詢、IP 哈希等。下面以加權輪詢為例,介紹如何配置負載均衡。

upstream backend_servers {
    server 192.168.1.101 weight=3;  # 權重為3
    server 192.168.1.102 weight=1;  # 權重為1
}

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://backend_servers;
        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;
    }
}

總結

反向代理是 Nginx 的重要功能之一,通過合理配置反向代理,我們可以實現負載均衡、提升安全性、加速服務響應等目標。在實際應用中,根據具體的業務需求和服務器架構,靈活運用 Nginx 的反向代理配置,能夠打造出高性能、高可用的 Web 服務系統。


閱讀原文:原文鏈接


該文章在 2025/7/21 10:48:19 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩中文字幕在线 | 日本一本在线观看视频 | 在线看片国产日韩欧美亚洲 | 婷婷色中文在线观看 | 亚洲精品一线在线观看 | 精品欧美日韩国产一区二区三区高清 |