Nginx proxy_pass指令(代理配置)
官方文档 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
文章目录
- 配置语法
- URL配置规则
- URL末尾是否存在 uri 的区别
- 1. URL末尾存在 uri
- 2. URL末尾不存在 uri
- 扩展:通过 rewrite 配置修改代理路径
- 附上测试用的nginx.conf
配置语法
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
URL配置规则
url用于设置代理服务器的协议和地址,以及可选的uri。
一般表现形式为:protocol://ip:port[uri]
或者 protocol://domain[uri]
由于URL末尾是否存在uri的处理逻辑不同,下面着重分析:
URL末尾是否存在 uri 的区别
1. URL末尾存在 uri
“
/
” 也算是uri
处理逻辑:代理请求时,会先将请求的uri中和location匹配的部分替换成 proxy_pass 指定的uri,再将最终的uri拼接到代理地址,才是最终访问的url
举个栗子:
有如下配置:
location /proxy {proxy_pass http://127.0.0.1:8099/svr1; # uri为'/svr1'
}
有如下请求:http://localhost:8088/proxy/index.html
详细解析:
- 请求的uri:/proxy/index.html
- location匹配的部分:/proxy
- proxy_pass 指定的uri:/svr1
- 最终的uri:/svr1/index.html (将请求的uri中和location匹配的部分替换成 proxy_pass 指定的uri)
- 代理地址:http://127.0.0.1:8099
- 最终访问的url:http://127.0.0.1:8099/svr1/index.html
即访问 http://localhost:8088/proxy/index.html,实际请求路径为 http://127.0.0.1:8099/svr1/index.html
2. URL末尾不存在 uri
处理逻辑:代理请求时,直接将请求的uri拼接到代理地址,就是最终访问的url
举个栗子:
有如下配置:
location /proxy2 {proxy_pass http://127.0.0.1:8099; # 无uri
}
有如下请求:http://localhost:8088/proxy2/index.html
详细解析:
- 请求的uri:/proxy2/index.html
- 代理地址:http://127.0.0.1:8099
- 最终访问的url:http://127.0.0.1:8099/proxy2/index.html
即访问 http://localhost:8088/proxy2/index.html,实际请求路径为 http://127.0.0.1:8099/proxy2/index.html
扩展:通过 rewrite 配置修改代理路径
location /v1 {proxy_pass http://127.0.0.1:8099; # 无urirewrite '^/v1/(.*)$' /$1 break;
}
即访问 http://localhost:8088/v1/index.html,实际请求路径为 http://127.0.0.1:8099/index.html
附上测试用的nginx.conf
events {worker_connections 1024;
}
http {server {listen 8088;server_name localhost;location /proxy {proxy_pass http://127.0.0.1:8099/svr1; # uri为'/svr1'}location /proxy2 {proxy_pass http://127.0.0.1:8099; # 无uri}location /v1 {proxy_pass http://127.0.0.1:8099;rewrite '^/v1/(.*)$' /$1 break;}location /v2 {proxy_pass http://127.0.0.1:8099$1;}location /v3 {proxy_pass http://127.0.0.1:8099$request_uri;}location ~ /v4/([\d]+)/(.*) {proxy_pass http://127.0.0.1:$1/$2?$query_string;}location ~ /v5/([\d]+) {proxy_pass http://127.0.0.1:$1;rewrite ^/v5/([\d]+)/(.*)$ /$2 break;}location /v6 {if ($request_uri ~* ^/(.*)$) {proxy_pass http://127.0.0.1:8099/$1;}}}# 此server模拟被代理的服务。server {listen 8099;server_name localhost;location / {add_header request $request;# 直接返回请求路径。也就是通过Nginx代理后,实际请求的url。default_type text/html; return 200 $host:$server_port$request_uri;}}
}
end
Nginx proxy_pass指令(代理配置)相关推荐
- 使用 Nginx 实现四层代理配置
一.基本介绍 平时我们在配置 Nginx 代理时,一般配置的都是基于 http 或是 https 协议的代理,也就是应用层.但是有些时候,我们并不想配置这种基于应用层的代理.比如说:我们要代理到数据库 ...
- 【nginx配置】 proxy_pass反向代理配置中url后面加不加/的说明
在日常的web网站部署中,经常会用到nginx的proxy_pass反向代理,有一个配置需要弄清楚:配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把loca ...
- nginx之反向代理配置
参数用nginx进行反向代理,我这边的有好几个系统,都是不同的IP和端口.我希望在外部访问的时候,是同一个IP和端口.这样可以解决跨域的问题, 结构图: 通过每个系统的网址可以直接访问,另外,我们通过 ...
- nginx搭建反向代理配置并测试
前言: 如今信息时代,对于web服务器的要求很高,既要性能,又要稳定性,又经济最好免费,还要满足公司的各大奇葩业务需求,越来越挑剔,就像你去买手机,中意的是外观好看,功能强大,拍照清晰,存储大,不死机 ...
- 解决nginx proxy_pass反向代理cookie,session丢失的问题
开发了一个web项目,直接通过url访问,可以正常访问.但是通过nginx就访问不到css,js等文件. nginx.conf文件配置如下: 访问web报错. 但是直接访问web就正常 整了很长时间, ...
- nginx 非socket代理配置
nginx反向代理socket配置 1,安装 git clone https://github.com/yaoweibin/nginx_tcp_proxy_module cd nginx-1.8.1p ...
- nginx api接口代理配置细节
server {listen 80;server_name localhost:80;location / {# proxy_set_header Host $host:$server_port;# ...
- nginx 4层代理配置
1.nginx 从1.9.0版本开始支持四层代理,但做四层代理时 编译需要添加 --with-stream模块 # ./configure --prefix=/usr/local/nginx--us ...
- 宝塔运行在nginx二级目录代理配置
访问路径为 http://1.15.13.54/bt/,每个静态文件和请求地址都需要重新代理 server {listen 80;server_name 1.15.13.54;index index. ...
最新文章
- VirtFS 虚拟化技术简介
- python函数返回的元组_python – 从函数返回一个单独的元组元组
- Ajax技术简单入门
- ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍
- 二分查找——A-B数对(洛谷 P1102)
- 跑了10千米,再一次伤了膝盖
- Java 8 ConcurrentHashMap源码中竟然隐藏着两个BUG
- server sql 数据c盘迁移d盘_C盘空间不足怎么办?如何给C盘扩容?
- CPU异常分析(以trap00为例)
- JavaScript中的数组 1
- 自动化测试之java的job任务
- google authenticator python_Google Authenticator TOTP原理详解(以Python为例)
- nodejs 端口被占解决
- [Python3 填坑] 008 索引君的朋友 in
- Redis应用(一)——Windows系统中搭建并启动redis环境
- 【EDA技术】 实验一 利用半减器设计一位全减器
- 监理项目的服务器,idc服务器机房搬迁工程施工监理的重点
- 魔兽8.0最新服务器人口普查,魔兽世界8.2最新人口普查 2019各服务器人口普查信息汇总...
- 一级域名二级域名区别
- 【前端安全】常见安全性问题及解决方案
热门文章
- xp系统电脑如何链接宽带连接服务器,WinXP设置开机自动宽带连接的方法
- poj3426(网络流)
- 计算机指纹识别的原理步骤,指纹识别技术的基本原理及过程
- 媒体-PR-微商-地摊儿…… 媒体人的转型你到了哪一步?
- F1赛车相关公开数据集
- mysql中signed是什么类型_mysql|unsigned 与 signed 类型
- 时寒冰:中国房价下跌序幕刚刚拉开
- android chrome 夜间,【科技知识】(暗黑模式)Android安卓版的Chrome谷歌浏览器这样设置暗黑模式(夜间模式)...
- css3 呼吸的莲花_CSS3 莲花盛开动画
- linux网络编程tcp和udp基本函数调用过程及如何选择