大家好,我是 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. 全球链界科技发展大会_如何成为科技界的团队合作者
  2. 如何调位置_如何知道手表是偷停还是真没动力了?看完之后你在家也能测
  3. 需求评审流程该如何高效的走下去
  4. Docker--------企业级最佳入门
  5. Linux网络 - 数据包的接收过程
  6. KVM 管理与使用说明
  7. mysql 连边聚合_MySQL分组,聚合函数,连表查询,子查询
  8. mysql的学习笔记(六)
  9. 源码生成网站,开发帮助网站
  10. 安装ubuntu系统中磁盘分区
  11. 5G网络规划面临的挑战
  12. 广工anyview数据结构第七章(2021.12)
  13. Openssh更新升级7.9p1步骤
  14. android视频适配与裁剪
  15. matlab tecplot data,MATLAB讀取TECPLOT笛卡爾網格三維流場數據
  16. Windows11 右键卡顿
  17. Java 获取对象占用内存大小
  18. Android 绘制圆形进度条
  19. cs起源本地服务器无响应,CS起源上为什么我无法进入有反作
  20. oxygen 生成java对象_Eclipse 4.7 Oxygen 正式发布!带来大量更新

热门文章

  1. Nginx配置实例-动静分离
  2. 红米k40夜景拍照怎么设置(夜景模式开启方法)
  3. 2022上海市安全员C证操作证考试题库及在线模拟考试
  4. 技术交流出差的准备工作应该了解什么?
  5. rapidjson 遇到的吭
  6. 中国耐甲氧西林金黄色葡萄球菌抗生素行业市场供需与战略研究报告
  7. Hotfile文件下载方法
  8. @NonNull系列注解,优雅解决令人发指的判空
  9. BMV是什么软件的格式
  10. 纯前端实现—手动轮播图