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

nginx配置之proxy_pass示例詳解

 更新時間:2025年11月01日 15:16:27   作者:MadeInSQL  
Nginx是最常用的反向代理工具之一,一個指令proxy_pass搞定反向代理,對于接口代理、負載均衡很是實用,但proxy_pass指令后面的參數很有講究,這篇文章主要介紹了nginx配置之proxy_pass的相關資料,需要的朋友可以參考下

Nginx 詳解

基本介紹

Nginx(發(fā)音為"engine x")是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。它由俄羅斯程序員Igor Sysoev開發(fā),以輕量級、高性能和穩(wěn)定性著稱。

主要特點

  1. 高性能:采用事件驅動架構,能夠處理高并發(fā)連接(官方測試可達5萬并發(fā))
  2. 低資源消耗:內存占用少,CPU使用率低
  3. 模塊化設計:核心功能精簡,通過模塊擴展功能
  4. 熱部署:支持不停止服務的情況下升級和配置變更
  5. 反向代理:出色的負載均衡能力

核心功能

HTTP服務器功能

  • 處理靜態(tài)內容(HTML、CSS、JS、圖片等)
  • 虛擬主機支持(基于域名/IP的虛擬服務器)
  • URL重寫和重定向
  • Gzip壓縮
  • 訪問控制

反向代理功能

  • 負載均衡(支持輪詢、權重、IP哈希等多種算法)
  • 緩存加速
  • SSL終端
  • 請求轉發(fā)

郵件代理功能

  • IMAP/POP3代理
  • SMTP代理
  • SSL/TLS支持

配置文件結構

Nginx配置文件通常位于/etc/nginx/nginx.conf,主要包含以下幾個部分:

  1. 全局塊:配置影響nginx全局的指令

    user  nginx;
    worker_processes  auto;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
  2. events塊:配置影響nginx服務器與用戶的網絡連接

    events {
        worker_connections  1024;
        use epoll;
        multi_accept on;
    }
    
  3. http塊:配置代理、緩存、日志等大多數功能

    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
        
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        
        access_log  /var/log/nginx/access.log  main;
        
        sendfile        on;
        tcp_nopush     on;
        tcp_nodelay    on;
        
        keepalive_timeout  65;
        
        include /etc/nginx/conf.d/*.conf;
    }
    
  4. server塊:配置虛擬主機的相關參數

    server {
        listen       80;
        server_name  example.com;
        
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    

常見應用場景

1. 靜態(tài)資源服務器

Nginx處理靜態(tài)文件效率極高,適合作為靜態(tài)資源服務器:

server {
    listen 80;
    server_name static.example.com;
    
    location / {
        root /data/static;
        expires 30d;
        access_log off;
    }
}

2. 負載均衡

配置Nginx作為負載均衡器:

upstream backend {
    server 10.0.0.1:8080 weight=3;
    server 10.0.0.2:8080;
    server 10.0.0.3:8080 backup;
}

server {
    listen 80;
    server_name app.example.com;
    
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

3. 反向代理

將請求代理到后端應用服務器:

server {
    listen 80;
    server_name api.example.com;
    
    location / {
        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-For $proxy_add_x_forwarded_for;
    }
}

性能優(yōu)化建議

  1. 調整worker_processes:通常設置為CPU核心數
  2. 優(yōu)化worker_connections:根據服務器內存調整
  3. 啟用sendfile:減少文件傳輸時的上下文切換
  4. 啟用gzip壓縮:減小傳輸數據量
  5. 配置緩存:對靜態(tài)資源設置適當的緩存時間
  6. 限制請求大小:防止大文件上傳耗盡資源
  7. 啟用keepalive:減少TCP連接建立的開銷

常用命令

  • 啟動Nginx:nginxsystemctl start nginx
  • 停止Nginx:nginx -s stopsystemctl stop nginx
  • 重新加載配置:nginx -s reloadsystemctl reload nginx
  • 測試配置文件:nginx -t
  • 查看版本:nginx -v(簡單版本)或 nginx -V(詳細版本及編譯參數)

proxy_pass基本概念

proxy_pass是nginx中用于反向代理的核心指令,它允許nginx將客戶端的請求轉發(fā)到后端服務器,并將響應返回給客戶端。這個功能在現代web架構中非常常見,常用于負載均衡、應用服務器代理等場景。

基本語法

proxy_pass指令的基本語法如下:

proxy_pass URL;

其中URL可以是:

  • 完整的URL(包含協(xié)議、主機名和端口)
  • 不完整的URL(只包含協(xié)議和主機名)
  • 僅包含主機名和端口的URI
  • Unix域套接字路徑

常見用法

1. 基本代理配置

location / {
    proxy_pass http://backend_server:8080;
}

這種配置會將所有匹配該location的請求轉發(fā)到backend_server:8080服務器。

2. 路徑保留與替換

location /api/ {
    proxy_pass http://backend_server:8080/api/;
}

在這個例子中,請求/api/users會被轉發(fā)到http://backend_server:8080/api/users,保持了原始路徑。

3. 路徑修改

location /service/ {
    proxy_pass http://backend_server:8080/;
}

這種情況下,請求/service/users會被轉發(fā)到http://backend_server:8080/users,location部分(/service/)被去除。

重要參數

proxy_pass通常與以下常用參數配合使用:

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;

proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 24k;
proxy_max_temp_file_size 1024m;

特殊場景處理

1. 處理重定向

proxy_redirect http://backend_server:8080/ http://$host/;

這個配置會將后端服務器的重定向地址中的http://backend_server:8080/替換為http://$host/,確保重定向到正確的域名。

2. WebSocket代理

location /ws/ {
    proxy_pass http://ws_backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

這種配置專門用于代理WebSocket連接,需要升級HTTP協(xié)議版本并設置特定的header。

常見問題

  1. 斜杠問題:proxy_pass指令中URL末尾的斜杠會影響路徑的轉發(fā)方式
  2. 變量使用:proxy_pass中可以使用nginx變量,但要注意解析時機
  3. DNS解析:如果使用域名,nginx會緩存DNS解析結果直到重啟或配置重載

高級用法

1. 負載均衡

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

location / {
    proxy_pass http://backend;
}

這種配置實現了簡單的輪詢負載均衡,將請求分發(fā)到多個后端服務器。

2. 條件代理

location / {
    if ($http_user_agent ~* "Mobile") {
        proxy_pass http://mobile_backend;
    }
    proxy_pass http://desktop_backend;
}

這個例子根據User-Agent將移動設備請求轉發(fā)到不同的后端服務器。

最佳實踐

  1. 始終設置Host頭部,確保后端服務器能識別原始請求的域名
  2. 為關鍵業(yè)務設置合理的超時時間
  3. 對敏感應用啟用SSL/TLS加密代理連接
  4. 監(jiān)控代理連接的性能和錯誤率
  5. 考慮使用keepalive連接減少TCP握手開銷

nginx 之 proxy_pass 應用場景

基本概念

proxy_pass 是 nginx 中用于實現請求轉發(fā)的指令,它可以將客戶端的請求轉發(fā)到后端服務器處理。這是 nginx 作為反向代理服務器的核心功能之一。

主要應用場景

1. 負載均衡

使用 proxy_pass 配合 upstream 模塊實現多臺服務器的負載均衡:

upstream backend {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
    server 192.168.1.103:8080;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

2. 應用解耦

將前端和后端服務分離,前端通過 nginx 訪問后端 API:

server {
    listen 80;
    server_name example.com;
    
    location /api/ {
        proxy_pass http://api-server:8080/;
        proxy_set_header Host $host;
    }
    
    location / {
        root /var/www/html;
    }
}

3. 協(xié)議轉換

將 HTTP 請求轉發(fā)到 HTTPS 后端服務:

server {
    listen 80;
    location / {
        proxy_pass https://secure-backend;
        proxy_ssl_verify off;
    }
}

4. 路徑重寫

修改請求路徑后再轉發(fā):

location /old-path/ {
    proxy_pass http://backend/new-path/;
}

5. 多服務代理

根據不同的 URL 路徑代理到不同的后端服務:

server {
    listen 80;
    
    location /app1/ {
        proxy_pass http://app1-server:8000/;
    }
    
    location /app2/ {
        proxy_pass http://app2-server:9000/;
    }
}

6. 緩存代理

結合 proxy_cache 實現緩存功能:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    location / {
        proxy_pass http://backend;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
    }
}

7. WebSocket 代理

代理 WebSocket 連接:

location /ws/ {
    proxy_pass http://websocket-server;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

8. 灰度發(fā)布

配合變量實現灰度發(fā)布:

map $cookie_user_type $backend {
    default      http://production-backend;
    "beta"       http://beta-backend;
}

server {
    location / {
        proxy_pass $backend;
    }
}

高級配置選項

  1. 超時控制

    proxy_connect_timeout 5s;
    proxy_read_timeout 60s;
    proxy_send_timeout 30s;
    
  2. 請求頭處理

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
  3. 緩沖控制

    proxy_buffering on;
    proxy_buffer_size 4k;
    proxy_buffers 8 16k;
    proxy_busy_buffers_size 24k;
    
  4. 重試機制

    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_next_upstream_tries 3;
    proxy_next_upstream_timeout 10s;
    

proxy_pass 是 nginx 反向代理功能的核心指令,通過合理配置可以實現多種復雜的代理場景,滿足現代 Web 架構的各種需求。

總結

到此這篇關于nginx配置之proxy_pass的文章就介紹到這了,更多相關nginx proxy_pass詳解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • lnmp環(huán)境中如何為nginx開啟pathinfo

    lnmp環(huán)境中如何為nginx開啟pathinfo

    這篇文章主要介紹了lnmp環(huán)境中如何為nginx開啟pathinfo的方法,操作很簡單,需要的朋友可以參考下
    2015-01-01
  • Nginx七層負載均衡之動靜分離思路詳解

    Nginx七層負載均衡之動靜分離思路詳解

    Nginx動靜分離簡單來說就是把動態(tài)跟靜態(tài)請求分開,不能理解成只是單純的把動態(tài)頁面和靜態(tài)頁面屋里分離,這篇文章主要介紹了Nginx七層負載均衡之動靜分離思路詳解,需要的朋友可以參考下
    2024-02-02
  • nginx反向代理java項目方式

    nginx反向代理java項目方式

    文章簡要介紹了如何使用Nginx作為反向代理來部署Java項目,核心在于配置proxy_pass指令
    2024-12-12
  • Nginx實現負載均衡和反向代理的方法

    Nginx實現負載均衡和反向代理的方法

    Nginx是由俄羅斯人研發(fā)的,應對Rambler的網站,并且2004年發(fā)布的第一個版本,Nginx功能豐富,可作為HTTP服務器,也可作為反向代理服務器,郵件服務器,本文給大家介紹了Nginx實現負載均衡和反向代理的方法,需要的朋友可以參考下
    2024-02-02
  • nginx負載均衡詳解(輪詢、權重、負載均衡)

    nginx負載均衡詳解(輪詢、權重、負載均衡)

    Nginx是一個高性能的開源Web服務器和反向代理服務器,主要用于高性能的高性能的Web服務器和反向代理服務器,它以其卓越的性能、可擴展性和穩(wěn)定性而聞名
    2026-03-03
  • Nginx配置文件nginx.conf的基本配置實例詳解

    Nginx配置文件nginx.conf的基本配置實例詳解

    Nginx(engine x)是一個輕量級的高性能的HTTP和反向代理web服務器及電子郵件(IMAP/POP3)代理服務器,下面這篇文章主要給大家介紹了關于Nginx配置文件nginx.conf基本配置的相關資料,需要的朋友可以參考下
    2022-09-09
  • Nginx的location的常見規(guī)則優(yōu)先級問題

    Nginx的location的常見規(guī)則優(yōu)先級問題

    Nginx是反向代理和負載均衡的首選工具,nginx的location配置有許多細節(jié)內容在網上不容易找到資料,或者解釋不清。本文對Nginx location規(guī)則優(yōu)先級介紹,需要的朋友參考下吧
    2021-08-08
  • nginx訪問路徑映射資源目錄的實現

    nginx訪問路徑映射資源目錄的實現

    本文主要介紹了nginx訪問路徑映射資源目錄,Nginx映射資源目錄是指在Nginx配置文件中設定規(guī)則,使得當客戶端向Nginx服務器發(fā)送請求訪問某個URL時,Nginx能夠將該URL映射到服務器本地的實際文件目錄,感興趣的可以了解一下
    2024-06-06
  • 利用nginx解決跨域問題的方法(以flask為例)

    利用nginx解決跨域問題的方法(以flask為例)

    這篇文章主要介紹了利用nginx解決跨域問題的方法,文中以flask為例給大家介紹的很詳細,需要的朋友可以參考學習,下面來一起看看吧。
    2017-02-02
  • Nginx源碼編譯安裝全過程

    Nginx源碼編譯安裝全過程

    Nginx是一個高性能的HTTP和反向代理服務器,具有異步非阻塞機制和輕量級的特點,它適用于多種場景,如Web網站服務、虛擬主機、反向代理、負載均衡和Web緩存服務器,Nginx的配置簡潔,使用方便,具有較高的穩(wěn)定性和抗并發(fā)能力
    2026-01-01

最新評論

泸定县| 新郑市| 沁阳市| 偃师市| 盱眙县| 石首市| 新民市| 河北区| 玉溪市| 乌兰县| 磐安县| 吉隆县| 故城县| 巫溪县| 钟山县| 西青区| 张家口市| 渭南市| 长海县| 历史| 昌江| 鄂伦春自治旗| 邯郸市| 左云县| 修文县| 舞钢市| 大新县| 大宁县| 吴忠市| 利辛县| 康保县| 渝中区| 廉江市| 大姚县| 上栗县| 罗城| 广德县| 灵石县| 阳东县| 繁峙县| 修水县|