nginx问题一则:nginx路径匹配特殊处理及增加cookie等二三事
有一个需求需要统一账号的登录,但是第三方应用的原生的登录界面登录以后,会被公司的前端检测没有登录的cookie拦截而跳转到公司自己的登录页面,因为是原生页面,所以只好后端处理这个cookie。由于不想在后台的java代码中增加相应的处理,所以在nginx上面打主意。
现有的nginx的配置如下,有一个/login,有一个*.html。
#/login路径跳转到 /login.html中
location ^~/login {rewrite ^(.*)$ /$1.html last;
}#处理.html的路径
location ~ \.(html)$ {proxy_set_header Host $http_host;add_header Cache-Control "no-cache, no-store, max-age=0, must-revalidate";add_header Pragma no-cache;....省略部分代码.....}
增加cookie的代码是
add_header Set-Cookie "cookieName=1; Domain=.xxx.com; Path=/" always;
首先我把这段代码给加到了 /login
的处理中,如下代码段中,但是没有成功,因为这里处理是rewrite
,rewrite是实现URL重写的关键指令,不会带cookie,所以代码不能放在这里。
location ^~/login {add_header Set-Cookie "cookieName=1; Domain=.xxx.com; Path=/" always;rewrite ^(.*)$ /$1.html last;
}
然后就只能放到对\.(html)
路径的处理段中了。这时就要对路径进行匹配了,我想对login.html
的路径进行匹配,然后只有访问这个路径时增加一个cookie。先把实现放出来。
location ~ \.(html)$ {proxy_set_header Host $http_host;add_header Cache-Control "no-cache, no-store, max-age=0, must-revalidate";add_header Pragma no-cache;#判断路径包含 /login 时进行特殊处理if ($request_uri ~* "/login") {# 在根域 .xxx.com的/路径上面,增加cookieName的cookie,值为1add_header Set-Cookie "cookieName=1; Domain=.xxx.com; Path=/" always;}
}
这里的$request_uri
变量,指的是完整的请求路径中去掉域名$host
剩下的部分,如http://www.shutdown.cn/login/login.do
的这个地址,$request_uri
就是 /login/login.do
。
if ($request_uri ~* "^/$")
表示url中只有域名,后面不跟任何东西,比如www.shutdown.cn。
if ($request_uri ~* "/login")
表示域名后面那串儿只要包含/login
这个关键词,就可匹配成功。比如http://www.shutdown.cn/login.html
参考文档 nginx配置文件中$request_uri到底是指的url里哪部分
nginx问题一则:nginx路径匹配特殊处理及增加cookie等二三事相关推荐
- Nginx 系列:Nginx 实践,location 路径匹配
1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2. location 路径匹配 2.1. 匹配规则 location 路径正则匹配: 2.2. 匹配优先级 路径匹配, ...
- nginx代理 1个端口+路径匹配 代理多个web
目录 nginx安装及卸载 修改配置文件 注意事项 记忆例子 nginx用yum安装在主机里,之前发过文章是装进容器里的,目录上稍有区别,配置文件基本一致,在主机内用的root用户,我部署nginx的 ...
- 千亿流量拦截控制处理技术-Nginx(安装 命令 路由匹配 负载均衡 常用配置)
千亿流量拦截控制处理技术-Nginx Nginx使用与配置 1 什么是nginx 1.1 可大量并行处理 1.2 与 Apache 相比 1.2.1 Apache VS Nginx 1.2.2 常用w ...
- nginx配置禁特定路径下的反向代理
近期因为项目需要再一次配置了nginx 这次的的需求设计到字符串处理 需要把<域名或ip>/xhr_api/开头的请求转发到内网某机器,同时移除掉xhr_api,这里直接记录下结果,配置非 ...
- Nginx location执行顺序和匹配规则
nginx location执行顺序和匹配原则根据location的特点分为普通和正则两种,执行顺序和匹配规则的差异也在于此. 执行顺序 nginx会优先执行普通location,不管普通locati ...
- nginx加载html目录下图片,nginx配置访问图片路径以及html静态页面的调取方法
nginx配置访问图片路径以及html静态页面的调取方法 发布时间:2017-03-09 12:06 来源:互联网 当前栏目:web技术类 给大家讲一个快速配置nginx访问图片地址,以及访问html ...
- 用nodejs 调试nginx rewrite 后输出路径
由于测试环境前端和后台分开部署,所以会遇到跨域问题. 前端工程是在nginx里面启动的,所以需要配置代理. 代理其实并不难配,主要是写个正则,由于对nginx并不是很熟悉,很难找到rewrite后的输 ...
- Nginx配置本地绝对路径下的静态资源
以下解决方法只针对,通过nginx配置本地绝对路径下的资源 没有涉及到其他问题 安装 nginx官网下载压缩包解压. 启动 启动方式不赘述.可以通过命令,也可以直接双击nginx.exe 配置 E:\ ...
- nginx 学习笔记--Nginx正则表达式之匹配操作符
nginx可以在配置文件中对连接进行判断,已达到防止rewrite.盗链.对静态资源设置缓存以及浏览器限制等目的: 字符串表达式支持正则表达式,能设定大小写是否敏感. 1.~为区分大小写的匹配. 2. ...
- windows10 修改Nginx的配置文件的路径后,访问老是指向Nginx主页面。
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_33435149/article/details/86659742 其实问题是我们开启了多个Ng ...
最新文章
- 重载(Overload )和覆写(override)的理解及区别
- oracle 触发器 upsert,数据库管理员
- 滑动窗口——TCP可靠传输的实现[转]
- ViewFlipper的功能和用法
- Python代码注释应该怎么写?
- uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...
- H3C iMC PLAT 安装部署相关问题及解决方法1
- 云服务器怎么配置文件,云服务器网卡怎么配置文件
- 开店软件透彻分析推荐
- 32G内存oracle内核设置,浅谈安装ORACLE时在Linux上设置内核参数的含义
- IOS上路_10-简单示例-手势识别2-1
- 2020秋 英文科技论文写作与学术报告-期末
- 《剑来》语句摘录(四)
- SpringBoot 无法捕获 maximum upload size exceeded
- vue中使用防抖和截流
- 解决IEEE会议模板引用bib文件时出现Bibliography not compatible with author-year citations
- oracle实验报告2:: Oracle数据库物理存储结构管理(含实验小结)
- Android webview加载页面获取摄像头权限实践(Kotlin)
- java马士兵笔记_马士兵java教程笔记2
- servlet cannot be resolved to a type的原因及解决方法