欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx正向代理與反向代理及配置文件全解析

 更新時間:2025年05月06日 09:57:56   作者:桃花面包  
Nginx是一款高性能的開源Web服務器和反向代理服務器,廣泛應用于高并發(fā)場景,如靜態(tài)資源托管、負載均衡、API網(wǎng)關等,本文給大家介紹Nginx正向代理與反向代理及配置文件全解析,感興趣的朋友一起看看吧

1. Nginx簡介與應用場景

Nginx是一款高性能的開源Web服務器和反向代理服務器,廣泛應用于高并發(fā)場景,如靜態(tài)資源托管、負載均衡、API網(wǎng)關等。其核心優(yōu)勢包括:

  • 事件驅(qū)動模型:異步非阻塞架構(gòu),支持數(shù)萬并發(fā)連接。
  • 模塊化設計:通過模塊擴展功能(如HTTP/2、gzip壓縮)。
  • 輕量高效:內(nèi)存占用低,適合資源受限環(huán)境。

典型應用場景

  • 靜態(tài)文件托管
  • 反向代理動態(tài)應用(如Node.js、Java服務)
  • 負載均衡集群
  • 安全防護(如DDoS防御、HTTPS加密)

2. 正向代理與反向代理的核心區(qū)別

2.1 正向代理(Forward Proxy)

  • 定義:代理客戶端訪問外部資源,客戶端主動配置代理。
  • 特點
    • 隱藏客戶端真實IP(如公司內(nèi)網(wǎng)訪問互聯(lián)網(wǎng))。
    • 突破訪問限制(如訪問被封鎖的網(wǎng)站)。

配置示例

server {
    listen 3128;                      # 監(jiān)聽端口
    resolver 8.8.8.8;                 # DNS解析服務器
    location / {
        proxy_pass http://$http_host;  # 轉(zhuǎn)發(fā)所有請求
    }
}

2.2 反向代理(Reverse Proxy)

  • 定義:代理服務端接收客戶端請求,客戶端無感知后端服務。
  • 特點
    • 隱藏后端服務器,提供負載均衡和安全防護。
    • 支持動態(tài)應用加速(如緩存、SSL終止)。

配置示例: 

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend_server;  # 轉(zhuǎn)發(fā)到后端集群
        proxy_set_header Host $host;       # 傳遞原始域名
    }
}

對比總結(jié)

特性正向代理反向代理
配置主體客戶端服務端
隱藏對象客戶端IP后端服務IP
典型用途訪問控制、匿名訪問負載均衡、安全防護

3. Nginx配置文件結(jié)構(gòu)總覽

Nginx的配置文件默認路徑為/etc/nginx/nginx.conf,支持模塊化設計,包含以下核心層級:

# 全局塊(Main Context)
user nginx;
worker_processes auto;
# events塊(Events Context)
events {
    worker_connections 1024;
}
# http塊(HTTP Context)
http {
    # HTTP全局配置
    include mime.types;
    # server塊(虛擬主機)
    server {
        # server塊配置
        listen 80;
        # location塊(請求路徑匹配)
        location / {
            root /var/www/html;
        }
    }
}
# stream塊(TCP/UDP代理,可選)
stream {
    server {
        listen 3306;
        proxy_pass backend_mysql;
    }
}

4.Nginx配置文件結(jié)構(gòu)全解析

1.全局塊(Main Context)

  • 作用范圍:影響整個Nginx進程的全局配置。
  • 核心指令
user nginx;                     # 運行Nginx的用戶和組(安全必備)
worker_processes auto;          # 工作進程數(shù)(建議設為CPU核心數(shù))
error_log /var/log/nginx/error.log warn;  # 錯誤日志路徑與級別(debug/info/notice/warn/error)
pid /var/run/nginx.pid;        # 存儲主進程PID的文件路徑

2.events塊(Events Context)

  • 作用范圍:定義Nginx處理網(wǎng)絡連接的事件模型參數(shù)。
  • 核心指令
events {
    worker_connections 1024;   # 單個工作進程的最大并發(fā)連接數(shù)(總并發(fā)量= worker_processes × worker_connections)
    use epoll;                 # 事件模型(Linux推薦epoll,F(xiàn)reeBSD用kqueue)
    multi_accept on;           # 一次性接受所有新連接
    accept_mutex off;          # 高并發(fā)時建議關閉互斥鎖(減少上下文切換)
}

3.http塊(HTTP Context)

3.1 http塊全局指令

  • 作用范圍:所有HTTP請求的全局配置。
  • 核心指令
http {
    # 基礎配置
    include /etc/nginx/mime.types;      # 包含MIME類型定義文件
    default_type application/octet-stream;  # 默認響應類型(未知文件類型時使用)
    # 日志配置
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" "$http_user_agent"';
    access_log /var/log/nginx/access.log main;  # 訪問日志路徑與格式
    error_log /var/log/nginx/error.log warn;
    # 性能優(yōu)化
    sendfile on;                # 啟用高效文件傳輸模式
    tcp_nopush on;              # 僅在sendfile開啟時有效,減少網(wǎng)絡包數(shù)量
    keepalive_timeout 65;       # 長連接超時時間(單位秒)
    client_max_body_size 100m;  # 客戶端請求體最大限制(防DDoS)
    # 壓縮配置
    gzip on;
    gzip_types text/plain text/css application/json;
    # 安全增強
    server_tokens off;          # 隱藏Nginx版本號
}

3.2 server塊(虛擬主機配置)

  • 作用范圍:定義單個虛擬主機(一個http塊可包含多個server塊)。
  • 核心指令
server {
    listen 80;                  # 監(jiān)聽端口(可指定IP,如listen 192.168.1.1:80)
    server_name example.com;    # 匹配的域名(支持通配符和正則表達式)
    root /var/www/html;         # 網(wǎng)站根目錄
    index index.html;           # 默認首頁文件
    # SSL配置(HTTPS)
    listen 443 ssl;
    ssl_certificate /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/private/example.key;
    # 訪問控制
    deny 192.168.1.100;         # 禁止特定IP訪問
    allow all;
    # 錯誤頁面重定向
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
}

3.3 location塊(請求路徑匹配)

  • 作用范圍:在server塊內(nèi)定義,根據(jù)URI路徑匹配處理規(guī)則。
  • 匹配模式
    • 精確匹配location = /path { ... }
    • 前綴匹配location /prefix/ { ... }
    • 正則匹配
      • location ~ \.php$ { ... }(區(qū)分大小寫)
      • location ~* \.jpg$ { ... }(不區(qū)分大小寫)

常用指令

  • location / {
        try_files $uri $uri/ /index.html;  # 靜態(tài)文件優(yōu)先匹配,不存在則返回首頁
    }
    location /images/ {
        alias /data/static/images/;       # 路徑別名(替換URI中的/images/)
        expires 30d;                      # 瀏覽器緩存30天
    }
    location /api/ {
        proxy_pass http://backend_server;  # 反向代理到后端服務
        proxy_set_header Host $host;       # 傳遞原始域名
        proxy_set_header X-Real-IP $remote_addr;  # 傳遞客戶端真實IP
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;      # 轉(zhuǎn)發(fā)PHP請求到FastCGI服務
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

3.4 upstream塊(負載均衡配置)

  • 作用范圍:在http塊內(nèi)定義后端服務器集群,用于負載均衡。
  • 核心指令
upstream backend {
    # 負載均衡策略(默認輪詢)
    least_conn;                # 最少連接數(shù)策略
    # ip_hash;                # 按客戶端IP哈希分配(會話保持)
    # 后端服務器列表
    server 10.0.0.1:8080 weight=3;  # 權(quán)重越高,分配請求越多
    server 10.0.0.2:8080;
    server 10.0.0.3:8080 backup;    # 備用服務器(主服務器宕機時啟用)
}
server {
    location / {
        proxy_pass http://backend;  # 使用upstream配置的集群
    }
}

3.5stream塊(TCP/UDP代理)

  • 作用范圍:處理非HTTP流量(如數(shù)據(jù)庫、SSH、DNS)。
  • 核心指令
stream {
    upstream backend_mysql {
        server 10.0.0.1:3306;
        server 10.0.0.2:3306;
    }
    server {
        listen 3306;          # 監(jiān)聽TCP端口
        proxy_pass backend_mysql;
        proxy_connect_timeout 5s;
    }
}

5. 配置文件示例與注釋

# 全局塊
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
# events塊
events {
    worker_connections 2048;
    use epoll;
}
# http塊
http {
    include 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"';
    access_log /var/log/nginx/access.log main;
    sendfile on;
    keepalive_timeout 65;
    # 虛擬主機1:靜態(tài)資源服務
    server {
        listen 80;
        server_name static.example.com;
        root /var/www/static;
        location / {
            expires 7d;
            add_header Cache-Control "public";
        }
    }
    # 虛擬主機2:反向代理動態(tài)應用
    server {
        listen 80;
        server_name api.example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
        }
    }
    # 負載均衡配置
    upstream backend {
        server 10.0.0.1:8080;
        server 10.0.0.2:8080;
    }
}
# stream塊(MySQL負載均衡)
stream {
    upstream mysql_cluster {
        server 10.0.0.1:3306;
        server 10.0.0.2:3306;
    }
    server {
        listen 3306;
        proxy_pass mysql_cluster;
    }
}

到此這篇關于Nginx正向代理與反向代理及配置文件全解析的文章就介紹到這了,更多相關nginx正向代理與反向代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論