大家好,我是 17。

今天和大家聊聊 pass_proxy 代理。

pass_proxy 代理

在前端代理主要是为了跨域。虽然前端跨域有多种方法,各有利弊,但用代理来跨域对开发是最友好的。用代理可以不用修改产品代码切换线上线下,非常安全。pass_proxy 默认会把 cookie 也一同转发。 常用的配置非常简单。

不带斜杠

前端 /api/user

后端 /api/user

 location ^~ /api/ {proxy_pass http://127.0.0.1:3001;}

不带斜杠把 path 直接拼接在 url后面;

带斜杠

前端 /api/user

后端 /user

 location ^~ /api/ {proxy_pass http://127.0.0.1:3001/;}

带斜杠会先去掉匹配到的 path, 再拼接。

正则匹配的时候不能带斜杠

~ 区分大小写正则匹配 ,~* 不区分大小写正则匹配 。location 用正则匹配的时候,proxy_pass 后面不能以 / 结尾,因为 nginx 不能处理这种情况。

 location ~ /api/ {proxy_pass http://127.0.0.1:3001/;}

本例中,请求 localhost:3000/ 会导致 nginx 报错。

斜杠后面加路径

前端 /api/user

后端 /web/api/user

 location ^~ /api/ {proxy_pass http://127.0.0.1:3001/web$request_uri;}

代理之前rewrite

location /search/ {rewrite    /search/([^/]+) /s?wd=$1 break;proxy_pass http://127.0.0.1:3001;
}

服务端获取真实ip

反向代理: 简单来说 proxy_pass 把请求转发到其它服务地址的时候,就是反向代理。

如果是客户端与服务器直接连接,nginx 变量 $remote_addr 就可以拿到真实ip。$remote_addr 是不能伪造的。但是如果客户端是经过反向代理连接的服务器,服务器能拿到的只有代理服务器的 IP。为了能拿到客户端真实 IP,代理服务器在转发的时候需要加上一个 http 扩展头部 X-Forwarded-For。

所有代理的 ip 依次列出来,从远及近。

X-Forwarded-For: IP0, IP1, IP2

X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代 理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。

location /api/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000/;}

$proxy_add_x_forwarded_for变量包含客户端请求头中的"X-Forwarded-For",与$remote_addr用逗号分开,如果没有"X-Forwarded-For" 请求头,则$proxy_add_x_forwarded_for等于$remote_addr$remote_addr变量的值是客户端的IP。

可能你会担心,ip会不会被伪造。即使客户端伪造了 ip,nginx 也会用真实的 ip 进行重置。所以 $remote_addr 是可信的。

nginx 常用配置之 pass_proxy相关推荐

  1. Nginx常用配置清单

    本文来说下Nginx常用配置清单 文章目录 概述 侦听端口 访问日志 域名 静态资源 重定向 反向代理 负载均衡 SSL协议 概述 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同 ...

  2. 酒浓码浓 - nginx常用配置

    nginx常用配置 1. 基础配置 main # 全局配置events { # nginx工作模式配置 }http { # http设置....server { # 服务器主机配置....locati ...

  3. Nginx 常用配置(学习笔记三)

    #drop_sql为防爬虫.SQL注入等常用配置 user www www; worker_processes 1; error_log  /usr/local/local/logs/nginx_er ...

  4. 2、nginx常用配置----作为web服务端

    目录 环境及目的 nginx配置文件特点和结构 1 特性 2 主配置文件结构 常用全局配置 1 main段 2 events段 web服务相关配置 1 server_namerootlisten 11 ...

  5. 2021 最新 Nginx 常用配置清单

    Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,其因丰富的功能集.稳定性.示例配置文件和低系统资源的消耗受到了开发者的欢迎. 本文, ...

  6. Nginx 常用配置汇总,从入门到干活足矣

    点击下方公众号「关注」和「星标」 回复"1024"获取独家整理的学习资料! 众所周知,Nginx 是 Apache服务不错的替代品.其特点是占有内存少,并发能力强,事实上 Ngin ...

  7. nginx常用配置详解

    一.nginx配置文件结构: ... #全局块 events { #events块 ...} http #http块{ ... #http全局块 server #server块 { ... #serv ...

  8. nginx常用配置目录

    Nginx配置"文件"路径(常修改文件) /etc/nginx/nginx.conf Nginx默认根目录"文件夹" /usr/share/nginx/html ...

  9. 性能怪兽-Nginx常用配置指北

    目录 安装 Nginx操作命令 https反向代理 负载均衡 轮询 加权轮询 最少连接 加权最少连接 IP Hash 普通 Hash 动静分离 资源压缩 缓冲区 缓存机制 解决跨域 防盗链设计 配置S ...

最新文章

  1. SpringBoot之前端文件管理
  2. Hardfault 2
  3. 华为云视频Cloud Native架构设计与工程实践
  4. [华为机试练习题]60.水仙花数
  5. 宜搭小技巧|维护Excel太麻烦?Excel一键转应用,为你的工作减负
  6. 解决 QtCreator 3.5(4.0)无法输入中文的问题
  7. 小tip: base64:URL背景图片与web页面性能优化(转载)
  8. 3299元!最便宜的5G手机明日开启预售
  9. 统计面要素中点要素的个数.
  10. WorldView-2数据的预处理
  11. CentOS 5.4安装rar
  12. @Scope注解的proxyMode的作用以及如何影响IoC容器的依赖查找
  13. 【Https(二】】实战 openssl 配置 tomcat
  14. 淘宝直播的定义,淘宝直播小技巧介绍,以及淘宝有哪些推广渠道和展示位?
  15. Android手机怎样投屏到win10(无需联网)
  16. 易语言取颜色值与c语言,易语言如何取某坐标颜色值
  17. 阿里云服务器的ECS和RDS和OSS和SLB是什么意思?
  18. 【字源大挪移—读书笔记】 第三部分:字尾
  19. Fedora安装字体方法和Ubuntu非常不同!
  20. 批量处理更香啊,Python 可轻松制作图文并茂的 PDF 报告

热门文章

  1. Mac 终端命令行报错 -bash: vi: command not found
  2. STM32F407-高级定时器PWM输入功能
  3. 高手给我指点一下迷津~技术情感困惑~
  4. 质量工具大总结(建议收藏备忘)
  5. pytorch学习笔记十一:损失函数
  6. 【matlab】绘制云图 + 修改配色方案 + 保存配色方案
  7. 构造函数的调用场景--构造函数与拷贝构造函数、移动构造函数之辨
  8. 电脑的眼泪--无限弹窗2
  9. 【无标题】这个是什么加密的?
  10. YDOOK :Golang 各大操作系统 完全卸载删除 golang 的方法教程