Nginx 有关反向代理的基本配置

反向代理基本配置项

poxy_pass
复制代码
poxy_pass URL;

将请求反向代理到指定的 URL,URL 可以是主机名或 IP : port 形式 也可以是 UNIX 句柄,看也可以使用 upstream 块。

配置块:location、if

默认情况下反向代理是不会转发请求中的 Host 头部。如果要转发必须加上配置:

复制代码
proxy_set_header Host $host;
proxy_method
复制代码
proxy_method method;

此配置相表示转发时的协议方法名,例如 method 设置为 POST 时 客户端发来的 GET 请求在转发时方法名也会改为 POST

配置块:http、server、location

proxy_hide_header
复制代码
proxy_hide_header the_header;

在转发上游服务器响应给客户端时,默认不会转发以下 HTTP 头部字段:Date Server X-Pad X-Accel-*proxy_hide_header 可以指定哪些 HTTP 头部字段不能被转发。

配置块:http、server、location

proxy_pass_header
复制代码
proxy_pass_header the_header;

通过原先禁止的 HTTP 头部字段

配置块:http、server、location

proxy_pass_request_body
复制代码
proxy_pass_request_body on | off;

是否发送 HTTP 包体部分

配置块:http、server、location

proxy_pass_request_headers
复制代码
proxy_pass_request_headers on | off;

是否发送 HTTP 头部

配置块:http、server、location

proxy_redirect
复制代码
proxy_redirect default | off | redirect replacement;
  • default:表示默认的重定向行为,将后端服务器返回的响应头中的重定向 URL 从后端服务器的地址改为代理服务器的地址。

  • off:表示禁用重定向。

  • redirect replacement:用于自定义重定向规则,replacement 是一个替换模式,用于指定如何替换重定向 URL。

配置块:http、server、location

Example
  1. 自定义重定向规则

    复制代码
    proxy_redirect http://backend_server/ http://frontend_server/;

    这个配置将会将后端服务器地址 http://backend_server/ 替换为前端服务器地址 http://frontend_server/

  2. 处理 HTTPS 重定向

    复制代码
    proxy_redirect http://backend_server/ https://frontend_server/;
proxy_next_upstream
复制代码
proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off;

proxy_next_upstream 指令用于指定在与后端服务器通信的过程中发生错误时 Nginx 应该尝试的下一个后端服务器。通常在使用反向代理时,当与当前后端服务器的连接出现问题时,Nginx 可以尝试连接到下一个后端服务器。

配置块:http、server、location

Example
  1. 默认配置

    复制代码
    proxy_next_upstream error timeout;

    这个配置表示当与后端服务器的连接发生错误或超时时,Nginx 将尝试连接下一个后端服务器。

  2. 禁用重试

    复制代码
    proxy_next_upstream off;

    这个配置将禁用在与后端服务器通信过程中的重试机制,即不会尝试连接下一个后端服务器。

  3. 特定状态码重试

    复制代码
    proxy_next_upstream http_500 http_502 http_503 http_504;

    这个配置表示当后端服务器返回 HTTP 状态码为 500、502、503、504 时,Nginx 将尝试连接下一个后端服务器。

Example

基本反向代理配置
复制代码
server {
    listen 80;
    server_name example.com;
​
    location / {
        proxy_pass http://backend_server;
    }
}

在这个配置中,所有来自 example.com 的请求都会被反向代理到 http://backend_server

反向代理指定路径
复制代码
server {
    listen 80;
    server_name example.com;
​
    location /app {
        proxy_pass http://backend_server;
    }
}

这个配置将只会将 example.com/app 下的请求反向代理到 http://backend_server,其他请求将不会被代理。

反向代理配置HTTPS
复制代码
server {
    listen 443 ssl;
    server_name example.com;
​
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
​
    location / {
        proxy_pass https://backend_server;
        proxy_ssl_verify off;  # 关闭对后端服务器证书的验证
    }
}

这个配置示例将会使用 HTTPS 反向代理请求到 https://backend_server,并关闭了对后端服务器证书的验证。

设置反向代理的请求头
复制代码
server {
    listen 80;
    server_name example.com;
​
    location / {
        proxy_pass http://backend_server;
        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_set_header 指令设置了一系列的请求头,将客户端的一些信息传递给后端服务器,这在某些情况下是有用的。

相关推荐
码农学院28 分钟前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
大耳朵-小飞象9 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技10 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
生活爱好者!13 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
尽兴-14 小时前
企业业务系统架构选型与渐进式演进
运维·系统架构·devops
TlSfoward14 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
通信小小昕15 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
壮哥_icon15 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化
RD_daoyi15 小时前
外链权重暴跌至13%,品牌提及反超传统链接——2026年不做Digital PR,你的独立站等于隐形
运维·网络·学习·机器学习·搜索引擎
电商API_1800790524716 小时前
企业ERP进销存场景|京东商品详情接口自动同步方案|凭证鉴权批量调用技术实操
大数据·运维·人工智能·爬虫·数据挖掘·网络爬虫