2026/2/18 13:27:44
网站建设
项目流程
做彩票网站,人力资源管理咨询公司,做网站完整视频,番禺做网站600元文章目录 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 转发到多…文章目录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_except4. 实际案例4.1 转发到多个后端服务器4.2 转发到不同路径4.3 转发到 Unix Domain Socketproxy_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?page3会被转发到http://book-server/books/novel/three-body.html?page3。3.3 重定向Nginx 会在某些情况下自动进行 301 重定向例如当请求的 URI 没有以斜杠/结束但 Nginx 认为这是一个目录时。location /films/nature/ { proxy_pass http://film-server; }如果访问http://example.com/films/natureNginx 会返回 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 Socketserver { listen 80; server_name example.com; location / { proxy_pass http://unix:/tmp/backend.socket:/uri/; } }