详细介绍:nginx代理配置详解

news/2026/1/17 15:37:29/文章来源:https://www.cnblogs.com/ljbguanli/p/19496295

详细介绍:nginx代理配置详解

一、什么是 Nginx 代理?

Nginx 代理分为两类:

  • 正向代理:客户端通过 Nginx 访问外部资源,外部服务器认为请求来自 Nginx。
  • 反向代理:客户端访问 Nginx,Nginx根据配置将请求转发到后端服务器,客户端并不知道后端服务器的真实地址。

Nginx 最常用于 反向代理,实现负载均衡、缓存和安全防护等。


二、反向代理配置详解

1. 基本反向代理

server {listen 80;server_name www.example.com;location / {proxy_pass http://backend_server;}
}
upstream backend_server {server 127.0.0.1:8080;server 192.168.1.2:8080;
}
说明:
  • proxy_pass:将请求转发到指定地址(可以是 IP,也可以是 upstream 定义的集群)。
  • upstream:定义后端服务器集群,实现负载均衡。

2. 代理头部配置(保持客户端信息)

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:设置转发请求时的 HTTP 头部,保持真实客户端信息。

3. 代理 HTTPS

server {listen 443 ssl;server_name www.example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;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;}
}


4. 反向代理常用参数

参数作用
proxy_pass指定后端服务器地址
proxy_set_header设置转发请求头
proxy_read_timeout后端响应超时时间
proxy_connect_timeout连接后端超时时间
proxy_buffering是否开启缓冲
proxy_redirect重定向后端响应
proxy_cookie_domain替换后端响应中的 Cookie 域名
proxy_intercept_errors拦截错误页面,由 Nginx 自己处理

示例:

location /api/ {proxy_pass http://api_backend/;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_read_timeout 60s;proxy_connect_timeout 10s;proxy_buffering off;
}

三、正向代理配置

Nginx 默认不支持正向代理,需要开启 ngx_http_proxy_connect_module 模块(编译时加上),或者使用第三方模块。

简单 HTTP 正向代理:

server {listen 8888;location / {proxy_pass $scheme://$http_host$request_uri;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;}
}

注意:正向代理有安全风险,生产环境慎用。


四、实际应用场景

  • 跨域代理:解决前端开发跨域问题。
  • 负载均衡:多台后端服务器分流压力。
  • SSL 终端:Nginx 负责 HTTPS,后端为 HTTP。
  • 缓存加速:Nginx 缓存后端内容,提升性能。

五、常见问题与排查

  • 代理后端无法访问:检查 proxy_pass 地址是否正确,后端服务是否启动。
  • 头部丢失:确保 proxy_set_header 设置了必要的头部。
  • 请求超时:调整 proxy_read_timeout 和 proxy_connect_timeout

六、完整示例

upstream backend {server 127.0.0.1:8080;server 127.0.0.1:8081;
}
server {listen 80;server_name www.example.com;location / {proxy_pass http://backend;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_read_timeout 60s;proxy_connect_timeout 10s;proxy_buffering off;}
}

七、Nginx 反向代理高级配置

1. 路径重写与子路径代理

有时候需要将某个路径代理到后端的不同路径:

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

如果需要去掉 /api/ 前缀,可以这样:

location /api/ {proxy_pass http://backend_server/;rewrite ^/api/(.*)$ /$1 break;
}

2. 负载均衡策略

Nginx 提供多种负载均衡算法:

upstream backend {server 192.168.1.2:8080 weight=3;server 192.168.1.3:8080 weight=1;# 轮询(默认)、权重、ip_hash、least_connip_hash;          # 按客户端IP分配请求# least_conn;     # 最少连接数优先
}

3. 健康检查(第三方模块)

Nginx 默认没有主动健康检查,可以用 nginx_upstream_check_module 实现:

upstream backend {server 192.168.1.2:8080;server 192.168.1.3:8080;check interval=3000 rise=2 fall=5 timeout=1000 type=http;check_http_send "GET /health HTTP/1.0\r\n\r\n";check_http_expect_alive http_2xx http_3xx;
}

4. 缓存代理内容(proxy_cache)

Nginx 可作为缓存服务器,减轻后端压力:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m max_size=1g inactive=60m use_temp_path=off;
server {location / {proxy_pass http://backend;proxy_cache mycache;proxy_cache_valid 200 302 10m;proxy_cache_valid 404 1m;proxy_cache_key "$scheme$request_method$host$request_uri";}
}

八、常见问题排查技巧

  1. 代理后端返回 502/504 错误

    • 检查后端服务是否启动、端口是否可达。
    • 检查 Nginx 的 proxy_connect_timeoutproxy_read_timeout 设置是否合理。
  2. 跨域问题

    • 可以在 Nginx 配置中添加响应头解决:

      add_header Access-Control-Allow-Origin *;
      add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
      add_header Access-Control-Allow-Headers 'Authorization,Content-Type';
  3. 静态资源与代理混用

    • 可以用 location 区分:

      location /static/ {root /var/www/html;
      }
      location / {proxy_pass http://backend;
      }
  4. WebSocket 代理

    • WebSocket 需要特殊头:

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

九、性能优化建议

  1. 合理设置连接数与超时时间

    • worker_processesworker_connectionskeepalive_timeout等参数根据服务器能力调整。
  2. 开启缓存与压缩

    • 启用 proxy_cache 和 gzip,减少后端压力与带宽消耗。

      gzip on;
      gzip_types text/plain application/json text/css application/javascript;
  3. 限制请求速率和并发

    • 防止恶意攻击或流量突发:

      limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
      location /api/ {limit_req zone=one burst=5;proxy_pass http://backend;
      }

十、Nginx 日志分析与调试

  • 访问日志:定位请求问题

    access_log /var/log/nginx/access.log;
  • 错误日志:定位代理错误

    error_log /var/log/nginx/error.log warn;
  • 可以用 tail -f 实时查看日志,配合 grep 筛查特定请求或错误。


十一、完整生产环境示例

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {worker_connections 1024;
}
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" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;upstream backend {server 127.0.0.1:8080 weight=2;server 127.0.0.1:8081 weight=1;ip_hash;}proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m max_size=1g inactive=60m use_temp_path=off;server {listen 80;server_name www.example.com;location /static/ {root /var/www/html;}location /api/ {proxy_pass http://backend;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_cache mycache;proxy_cache_valid 200 302 10m;add_header Access-Control-Allow-Origin *;}location /ws/ {proxy_pass http://backend;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1173947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘智能革命:让YOLO在FPGA上“飞”起来的软硬协同之道

当目标检测算法遇上边缘计算硬件,一场关于速度、精度与功耗的精妙平衡就此展开。你不是在压缩模型,而是在为算法设计专属的硅基座驾。 在一台无人机上进行实时目标检测,需要多少功耗?传统方案使用高性能GPU需要15-30瓦,而通过算法-硬件协同优化设计的FPGA加速系统,可以将…

1.17 模拟赛总结

\(t2\) 复杂度分析错误,后 \(1h\) 因做出两道题松懈。 如果感觉因理解题意超过 \(15min\) 应该最后处理这道题。 题目复杂度的分析不能想当然。 记数题多在纸上推式子。 如果做的特别顺,那别人做的也特别顺,切忌后场…

计及阶梯碳交易成本与多元储能的综合能源系统IES联合低碳优化调度——考虑热电联产机组、燃气机组...

计及阶梯碳交易成本多元储能(电储能、氢储能、气储能、热储能)综合能源系统IES联合低碳优化调度(用MatlabYalmipCplex) 考虑机组和设备:热电联产机组、燃气机组、甲烷反应生成设备 电解槽、氢燃料电池、计及新能源风电…

Oracle 19c入门学习教程,从入门到精通,SQL语言基础详解:语法、使用方法与综合案例(5)

SQL语言基础详解:语法、使用方法与综合案例 SQL(Structured Query Language)是用于管理关系型数据库的标准语言。本章系统讲解 SQL 语言的基础知识,包括其分类、编写规则、数据查询、函数使用、子查询、DML 操作等,并结…

可解释集成模型如何提升商品搜索效果

可解释集成模型改进商品检索 机器学习领域正飞速发展,新模型层出不穷,均承诺超越前代。然而,为特定用例评估新模型是一个耗时且消耗资源的过程。这对于像某中心的商店这样承诺为客户提供最先进技术、同时又全天候高负载运营的在线服务而言&am…

2026管道除铁器厂家权威推荐榜单:旋转式除铁机/电磁粉料除铁机/旋转式除铁器/电磁除铁机/永磁管道除铁机源头厂家精选。 - 品牌推荐官

在工业物料处理领域,除铁设备是保障产品质量的关键环节。新乡市胜宇机电有限公司作为深耕筛分与除铁设备领域的科技型企业,凭借全链条研发、生产、服务能力,为新能源、陶瓷、化工、矿业等行业提供多元化解决方案。其…

Java版LeetCode热题100之二叉树的直径:从深度计算到路径优化的全面解析

Java版LeetCode热题100之二叉树的直径:从深度计算到路径优化的全面解析本文将深入剖析 LeetCode 第543题「二叉树的直径」,不仅提供深度优先搜索(DFS)的高效解法,还涵盖算法原理、复杂度分析、面试技巧、工程应用及关联…

2025-2026年徐州高品质住宅评选与推荐报告:于深度调整期中寻找价值确定性 - 2026年企业推荐榜

开篇引言:一个改善家庭的选房困局与市场之变 2025年初,徐州的李先生开始为家庭置换一套终极改善住房。他的需求明确:核心地段、顶尖产品力、国企或优质品牌保障、以及能够穿越周期的资产价值。然而,在市场调研中他…

杭州市英语雅思培训辅导机构推荐,2026权威出国雅思课程排行榜 - 苏木2025

雅思培训领域,杭州市备考群体普遍面临诸多痛点:选课乱象丛生,优质教育机构鱼龙混杂,难从海量口碑排名筛选靠谱选项;考试备考缺乏系统规划,提分技巧不精准,提分效果大打折扣;多数机构教学方案无个性化适配,无法…

2026年金亿重工高臂钻机市场口碑推荐,浙江地区用户评价分析 - 工业品牌热点

在工程建设领域,一款高效可靠的高臂钻机是解决复杂边坡施工难题的核心装备,关乎项目进度、施工安全与成本控制。面对市场上琳琅满目的高臂钻机品牌,如何挑选一款适配自身施工需求、口碑过硬的产品?以下结合用户痛点…

泉州市英语雅思培训辅导机构推荐;2026权威出国雅思课程排行榜 - 苏木2025

基于英国文化教育协会《2024-2025中国大陆地区雅思考生成绩大数据报告》核心洞察,结合泉州鲤城区、丰泽区、洛江区、泉港区、晋江市等区域考生备考痛点,本次通过权威、全面、深度测评,围绕雅思培训选课核心诉求,从…

Java版LeetCode热题100之二叉树的层序遍历:从BFS到多维拓展的全面解析

Java版LeetCode热题100之二叉树的层序遍历:从BFS到多维拓展的全面解析本文将深入剖析 LeetCode 第102题「二叉树的层序遍历」,不仅提供广度优先搜索(BFS)的标准解法,还涵盖算法原理、复杂度分析、面试技巧、工程应用及…

逆向 讀墨Readmoo iOS客户端:Readium LCP加密

中国台湾电子书主流平台之一的读墨Readmoo拥有十分全面的书库,虽然其使用的支付平台为 藍新金流NewebPay 导致不支持银联UnionPay,国内发卡行的VISA/MasterCard也可能拒付,对中国大陆并不友好。 但是出于读墨采用了…

ACPI!ACPIBuildProcessRunMethodPhaseCheckSta函数对节点BAT1方法_STA的处理在异步线程ACPI!ACPIWorker

ACPI!ACPIBuildProcessRunMethodPhaseCheckSta函数对节点BAT1方法_STA的处理在异步线程ACPI!ACPIWorker 0: kd> kc# 00 ACPI!ACPIBuildProcessRunMethodPhaseCheckSta 01 ACPI!ACPIBuildProcessGenericList 02 ACPI!ACPIBuildDeviceDpc 03 nt!KiRetireDpcList 04 nt!KiDispa…

学霸同款8个AI论文写作软件,MBA论文高效搞定!

学霸同款8个AI论文写作软件,MBA论文高效搞定! AI 工具如何助力论文写作,让学术之路更高效 在当今快速发展的学术环境中,MBA 学生和科研工作者面临着越来越高的论文写作要求。传统的写作方式不仅耗时费力,还容易因格式不…

2026年工业滤芯厂家权威推荐榜单:除杂滤芯/活性炭滤芯/精密滤芯/吸气滤芯/聚结分离滤芯源头厂家精选 - 品牌推荐官

在工业流体分离领域,滤芯作为核心部件直接影响系统运行效率与稳定性。河南纵达过滤设备有限公司凭借年产10万件(套)的规模化生产能力,成为国内滤芯制造领域的重要参与者。其产品覆盖天然气滤芯、氢气滤芯、聚结滤芯…

2026必备!专科生毕业论文必备的9款AI论文工具深度测评

2026必备!专科生毕业论文必备的9款AI论文工具深度测评 2026年专科生毕业论文必备AI工具测评指南 随着人工智能技术的不断发展,越来越多的专科生开始借助AI工具提升毕业论文写作效率。然而面对市场上琳琅满目的论文辅助软件,如何选择真正适合自…

互联网大厂Java面试实战:Spring Boot、微服务与AI技术综合解析

文章内容: 本文以在线教育场景为背景,讲述一位严肃的面试官与搞笑的水货程序员谢飞机之间的三轮面试对话。面试围绕Java核心技术、构建工具、Web框架、数据库ORM、微服务架构、缓存、安全、消息队列以及AI技术展开,层层递进,帮助求…

户外广告投放平台哪家合适?通广传媒多场景服务超给力 - 工业品牌热点

在城市化进程加速与品牌传播需求多元化的当下,户外广告作为连接品牌与消费者的线下核心触点,其投放平台的选择直接关乎品牌曝光效率与转化效果。面对市场上琳琅满目的户外广告投放公司,如何破解效果难评估、反馈滞后…

泉州市英语雅思培训辅导机构推荐,2026权威出国雅思课程排行榜 - 苏木2025

经国际教育测评研究院联合雅思备考指导中心发起,基于2026年度《闽南地区雅思培训行业发展白皮书》,结合泉州市及石狮市、南安市、惠安县、安溪县、永春县五地12000余名雅思考生调研数据、72家教育机构实地探访及3个月…