Young's blog Young's blog
首页
Spring
  • 前端文章1

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Young

首页
Spring
  • 前端文章1

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Nginx基础
  • Nginx配置
  • Nginx proxy_pass 配置转发 / 路径
    • Nginx 配置 proxy_pass 转发的 / 路径问题
    • 示例
      • 有 /
      • 无 /
      • 其他实现方式
    • 其他问题
      • 跨域问题
      • Forwarded 配置
      • Referer policy 问题
  • Nginx 配置密码认证
  • Nginx 配置 CPU 亲和性
  • Nginx 配置 UDP/TCP/WebSocket 反向代理
  • Nginx 配置目录文件列表显示功能
  • Nginx 配置 gzip 压缩、缓存功能
  • Nginx 配置端口转发
  • Nginx底层进程机制剖析
  • nginx配置location匹配顺序总结
  • nginx
andanyang
2023-03-29
目录

Nginx proxy_pass 配置转发 / 路径

Nginx proxy_pass uri 的 / 路径详细介绍。

# Nginx 配置 proxy_pass 转发的 / 路径问题

在 nginx 中配置 proxy_pass 时,如果是按照^~匹配路径时,要注意 proxy_pass 后的 url 最后的 / :

  • 当加上了 /,相当于绝对根路径,则 nginx 不会把 location 中匹配的路径部分代理走
  • 如果没有 /,相当于相对路径,则会把匹配的路径部分也给代理走

# 示例

# 有 /

location ^~ /proxy_api/
{
    proxy_cache api_cache;
    proxy_set_header Host api.ady.cn;
    proxy_pass http://api.ady.cn/;
}
1
2
3
4
5
6

如上面的配置,如果请求的 url 是 http://your_domain/proxy_api/load.php,会被代理成 http://api.ady.cn/load.php

# 无 /

location ^~ /proxy_api/
{
    proxy_cache api_cache;
    proxy_set_header Host api.ady.cn;
    proxy_pass http://api.ady.cn;
}
1
2
3
4
5
6

如上面的配置,则会被代理到http://api.ady.cn/proxy_api/load.php

# 其他实现方式

当然,我们可以用如下的 rewrite 来实现 / 的功能:

location ^~ /proxy_api/
{
    proxy_cache api_cache;
    proxy_set_header Host api.ady.cn;
    rewrite /proxy_api/(.+)$ /$1 break;
    proxy_pass http://api.ady.cn;
}
1
2
3
4
5
6
7

# 其他问题

# 跨域问题

    location /abc/ {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
        proxy_pass http://<ip>:<port>/;
    }
1
2
3
4
5
6
7

# Forwarded 配置

    location /abc/ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_pass http://<ip>:<port>/;
    }
1
2
3
4
5
6
7

# Referer policy 问题

    location /abc/ {
        # add_header 'Referrer-Policy' 'no-referrer-when-downgrade';
        # add_header 'Referrer-Policy' 'unsafe-url';
        # add_header 'Referrer-Policy' 'strict-origin';
        # proxy_set_header Referer $http_referer;
        proxy_set_header Referer http://<ip>:<port>$request_uri;
        proxy_redirect off;
        proxy_pass http://<ip>:<port>/;
    }
1
2
3
4
5
6
7
8
9
编辑 (opens new window)
上次更新: 2024/04/19, 08:52:45
Nginx配置
Nginx 配置密码认证

← Nginx配置 Nginx 配置密码认证→

最近更新
01
idea 热部署插件 JRebel 安装及破解,不生效问题解决
04-10
02
spark中代码的执行位置(Driver or Executer)
12-12
03
大数据技术之 SparkStreaming
12-12
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Young | MIT License
浙ICP备20002744号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式