nginx 常用配置之 pass_proxy
大家好,我是 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相关推荐
- Nginx常用配置清单
本文来说下Nginx常用配置清单 文章目录 概述 侦听端口 访问日志 域名 静态资源 重定向 反向代理 负载均衡 SSL协议 概述 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同 ...
- 酒浓码浓 - nginx常用配置
nginx常用配置 1. 基础配置 main # 全局配置events { # nginx工作模式配置 }http { # http设置....server { # 服务器主机配置....locati ...
- Nginx 常用配置(学习笔记三)
#drop_sql为防爬虫.SQL注入等常用配置 user www www; worker_processes 1; error_log /usr/local/local/logs/nginx_er ...
- 2、nginx常用配置----作为web服务端
目录 环境及目的 nginx配置文件特点和结构 1 特性 2 主配置文件结构 常用全局配置 1 main段 2 events段 web服务相关配置 1 server_namerootlisten 11 ...
- 2021 最新 Nginx 常用配置清单
Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,其因丰富的功能集.稳定性.示例配置文件和低系统资源的消耗受到了开发者的欢迎. 本文, ...
- Nginx 常用配置汇总,从入门到干活足矣
点击下方公众号「关注」和「星标」 回复"1024"获取独家整理的学习资料! 众所周知,Nginx 是 Apache服务不错的替代品.其特点是占有内存少,并发能力强,事实上 Ngin ...
- nginx常用配置详解
一.nginx配置文件结构: ... #全局块 events { #events块 ...} http #http块{ ... #http全局块 server #server块 { ... #serv ...
- nginx常用配置目录
Nginx配置"文件"路径(常修改文件) /etc/nginx/nginx.conf Nginx默认根目录"文件夹" /usr/share/nginx/html ...
- 性能怪兽-Nginx常用配置指北
目录 安装 Nginx操作命令 https反向代理 负载均衡 轮询 加权轮询 最少连接 加权最少连接 IP Hash 普通 Hash 动静分离 资源压缩 缓冲区 缓存机制 解决跨域 防盗链设计 配置S ...
最新文章
- 全球链界科技发展大会_如何成为科技界的团队合作者
- 如何调位置_如何知道手表是偷停还是真没动力了?看完之后你在家也能测
- 需求评审流程该如何高效的走下去
- Docker--------企业级最佳入门
- Linux网络 - 数据包的接收过程
- KVM 管理与使用说明
- mysql 连边聚合_MySQL分组,聚合函数,连表查询,子查询
- mysql的学习笔记(六)
- 源码生成网站,开发帮助网站
- 安装ubuntu系统中磁盘分区
- 5G网络规划面临的挑战
- 广工anyview数据结构第七章(2021.12)
- Openssh更新升级7.9p1步骤
- android视频适配与裁剪
- matlab tecplot data,MATLAB讀取TECPLOT笛卡爾網格三維流場數據
- Windows11 右键卡顿
- Java 获取对象占用内存大小
- Android 绘制圆形进度条
- cs起源本地服务器无响应,CS起源上为什么我无法进入有反作
- oxygen 生成java对象_Eclipse 4.7 Oxygen 正式发布!带来大量更新