news 2026/5/23 20:21:19

Nginx 的 proxy_pass 使用简介

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx 的 proxy_pass 使用简介
文章目录
    • 1. 基本概念
      • 1.1 `proxy_pass` 概述
      • 1.2 语法
      • 1.3 使用场景
    • 2. 基本用法
      • 2.1 HTTP 代理
        • 2.1.1 基本示例
        • 2.1.2 绝对根路径 vs 相对路径
      • 2.2 Stream 代理
    • 3. 高级用法
      • 3.1 正则匹配
      • 3.2 变量使用
      • 3.3 重定向
      • 3.4 精确匹配
      • 3.5 `if` 语句
      • 3.6 `limit_except`
    • 4. 实际案例
      • 4.1 转发到多个后端服务器
      • 4.2 转发到不同路径
      • 4.3 转发到 Unix Domain Socket

proxy_pass是 Nginx 中一个非常重要的指令,用于将请求代理到后端服务器。本文将详细介绍proxy_pass的基本用法、配置示例以及一些高级用法。

1. 基本概念

1.1proxy_pass概述

proxy_pass指令用于将请求转发到后端服务器。它可以用于 HTTP 和 Stream 模块,分别处理 HTTP 请求和 TCP/UDP 流量。

1.2 语法
proxy_pass URL;
  • URL:后端服务器的地址,可以是 HTTP/HTTPS 地址或 TCP/UDP 地址。
1.3 使用场景
  • HTTP 代理:将 HTTP 请求转发到后端服务器。
  • Stream 代理:将 TCP/UDP 流量转发到后端服务器。

2. 基本用法

2.1 HTTP 代理
2.1.1 基本示例
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; } }

在这个示例中,所有访问example.com的请求都会被转发到backend_server

2.1.2 绝对根路径 vs 相对路径
  • 绝对根路径:在proxy_pass后面的 URL 以斜杠/结束,表示绝对根路径。

    location /proxy/ { proxy_pass http://127.0.0.1/; }

    例如,访问http://example.com/proxy/test.html会被转发到http://127.0.0.1/test.html

  • 相对路径:在proxy_pass后面的 URL 不以斜杠/结束,表示相对路径。

    location /proxy/ { proxy_pass http://127.0.0.1; }

    例如,访问http://example.com/proxy/test.html会被转发到http://127.0.0.1/proxy/test.html

2.2 Stream 代理
stream { upstream backend { server 127.0.0.1:8080; } server { listen 12345; proxy_pass backend; } }

在这个示例中,所有连接到12345端口的 TCP 流量都会被转发到127.0.0.1:8080

3. 高级用法

3.1 正则匹配

location使用正则表达式时,proxy_pass不能包含 URI 部分。

location ~ /testc { proxy_pass http://127.0.0.1:8801; }

如果包含 URI 部分,会导致配置文件解析错误:

location ~ /testd { proxy_pass http://127.0.0.1:8801/; # 错误 }
3.2 变量使用

可以使用变量来动态生成转发地址。

location /novel/ { proxy_pass http://book-server/books$request_uri; }

例如,访问http://example.com/novel/three-body.html?page=3会被转发到http://book-server/books/novel/three-body.html?page=3

3.3 重定向

Nginx 会在某些情况下自动进行 301 重定向,例如当请求的 URI 没有以斜杠/结束,但 Nginx 认为这是一个目录时。

location /films/nature/ { proxy_pass http://film-server; }

如果访问http://example.com/films/nature,Nginx 会返回 301 重定向到http://example.com/films/nature/

3.4 精确匹配

可以使用精确匹配来避免 301 重定向。

location /films/nature/ { proxy_pass http://film-server; } location = /films/nature { proxy_pass http://film-server; }
3.5if语句

location中使用if语句时,proxy_pass不能包含 URI 部分。

location /google { if ($geoip_country_code ~ (RU|CN)) { proxy_pass http://www.google.hk; } }
3.6limit_except

limit_except中使用proxy_pass时,不能包含 URI 部分。

location /yongfu/ { proxy_pass http://unix:/tmp/backend.socket:/uri/; limit_except PUT DELETE { proxy_pass http://127.0.0.1:9080; } }

4. 实际案例

4.1 转发到多个后端服务器
upstream backend_servers { server 192.168.1.10:8080; server 192.168.1.11:8080; server 192.168.1.12:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://backend_servers; } }
4.2 转发到不同路径
server { listen 80; server_name example.com; location /api/ { proxy_pass http://api_server/; } location /static/ { proxy_pass http://static_server/; } }
4.3 转发到 Unix Domain Socket
server { listen 80; server_name example.com; location / { proxy_pass http://unix:/tmp/backend.socket:/uri/; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 20:21:18

Nginx 生成、配置SSL证书让浏览器信任证书

文章目录 1.生成SSL证书 1.1生成自签名证书(生成证书方式一)1.2.模拟CA机构方式生成证书(生成证书方式二,推荐) 3.1 生成 CA 的私钥ca.key和自签名证书ca.crt:3.2 生成服务器私钥 server.key:3.3 生成服务器证书请求文件server.csr&#xff…

作者头像 李华
网站建设 2026/5/2 21:09:02

如何查看电脑上是ros1还是ros2呢?

问题描述:如何查看电脑上是ros1还是ros2呢?问题解答:要查看你的电脑上安装的是 ROS 1 还是 ROS 2,可以通过以下几种方式来确认:1. 检查环境变量ROS 通常会在环境变量中设置一些标识,可以通过查看终端中的环…

作者头像 李华
网站建设 2026/5/11 2:11:38

net.sf.jsqlparser.statement.select.Select.getSelectBody()

1、问题原因 发生这个问题就是因为Pagehelper中jsqlparser和Mybatis-puls中jsqlparser冲突,以我的项目来说,我项目中的Pagehelper中jsqlparser版本为4.2而Mybatis-puls中jsqlparser的版本为4.9,就导致版本兼容问题 2、解决方法 如果你想以…

作者头像 李华
网站建设 2026/5/21 14:45:13

Nginx 安装及配置教程(Windows)【安装】

文章目录 一、 Nginx 下载 1. 官网下载2. 其它渠道 二、 Nginx 安装三、 配置四、 验证五、 其它问题 1. 常用命令2. 跨域问题 软件 / 环境安装及配置目录 一、 Nginx 下载 1. 官网下载 安装地址:https://nginx.org/en/download.html 打开浏览器输入网址 htt…

作者头像 李华
网站建设 2026/5/23 5:23:43

金运环球:被动卖压VS鸽派预期,非农前聚焦关键区间

【市场早间简述】大宗商品指数年度再平衡于昨日盘后正式启动,预计将产生显著被动抛压,昨日金银价格在抛压下V型反弹显示买盘支撑。地缘政治风险持续存在,叠加美联储官员鸽派表态强化降息预期,为市场提供中长期支撑。现货黄金与白银…

作者头像 李华
网站建设 2026/5/3 8:11:23

MySQL:顿悟了,添加索引时竟然不锁表?

一、前言 在 MySQL 数据库中,“锁表” 指的是对数据库表进行锁定,以控制对表中数据的并发访问。锁表是数据库管理系统(DBMS)用来维护数据一致性和完整性的一种机制。 当某个事务(Transaction)或操作需要对表…

作者头像 李华