有一个需求需要统一账号的登录,但是第三方应用的原生的登录界面登录以后,会被公司的前端检测没有登录的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等二三事相关推荐

  1. Nginx 系列:Nginx 实践,location 路径匹配

    1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2. location 路径匹配 2.1. 匹配规则 location 路径正则匹配: 2.2. 匹配优先级 路径匹配, ...

  2. nginx代理 1个端口+路径匹配 代理多个web

    目录 nginx安装及卸载 修改配置文件 注意事项 记忆例子 nginx用yum安装在主机里,之前发过文章是装进容器里的,目录上稍有区别,配置文件基本一致,在主机内用的root用户,我部署nginx的 ...

  3. 千亿流量拦截控制处理技术-Nginx(安装 命令 路由匹配 负载均衡 常用配置)

    千亿流量拦截控制处理技术-Nginx Nginx使用与配置 1 什么是nginx 1.1 可大量并行处理 1.2 与 Apache 相比 1.2.1 Apache VS Nginx 1.2.2 常用w ...

  4. nginx配置禁特定路径下的反向代理

    近期因为项目需要再一次配置了nginx 这次的的需求设计到字符串处理 需要把<域名或ip>/xhr_api/开头的请求转发到内网某机器,同时移除掉xhr_api,这里直接记录下结果,配置非 ...

  5. Nginx location执行顺序和匹配规则

    nginx location执行顺序和匹配原则根据location的特点分为普通和正则两种,执行顺序和匹配规则的差异也在于此. 执行顺序 nginx会优先执行普通location,不管普通locati ...

  6. nginx加载html目录下图片,nginx配置访问图片路径以及html静态页面的调取方法

    nginx配置访问图片路径以及html静态页面的调取方法 发布时间:2017-03-09 12:06 来源:互联网 当前栏目:web技术类 给大家讲一个快速配置nginx访问图片地址,以及访问html ...

  7. 用nodejs 调试nginx rewrite 后输出路径

    由于测试环境前端和后台分开部署,所以会遇到跨域问题. 前端工程是在nginx里面启动的,所以需要配置代理. 代理其实并不难配,主要是写个正则,由于对nginx并不是很熟悉,很难找到rewrite后的输 ...

  8. Nginx配置本地绝对路径下的静态资源

    以下解决方法只针对,通过nginx配置本地绝对路径下的资源 没有涉及到其他问题 安装 nginx官网下载压缩包解压. 启动 启动方式不赘述.可以通过命令,也可以直接双击nginx.exe 配置 E:\ ...

  9. nginx 学习笔记--Nginx正则表达式之匹配操作符

    nginx可以在配置文件中对连接进行判断,已达到防止rewrite.盗链.对静态资源设置缓存以及浏览器限制等目的: 字符串表达式支持正则表达式,能设定大小写是否敏感. 1.~为区分大小写的匹配. 2. ...

  10. windows10 修改Nginx的配置文件的路径后,访问老是指向Nginx主页面。

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_33435149/article/details/86659742 其实问题是我们开启了多个Ng ...

最新文章

  1. 重载(Overload )和覆写(override)的理解及区别
  2. oracle 触发器 upsert,数据库管理员
  3. 滑动窗口——TCP可靠传输的实现[转]
  4. ViewFlipper的功能和用法
  5. Python代码注释应该怎么写?
  6. uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...
  7. H3C iMC PLAT 安装部署相关问题及解决方法1
  8. 云服务器怎么配置文件,云服务器网卡怎么配置文件
  9. 开店软件透彻分析推荐
  10. 32G内存oracle内核设置,浅谈安装ORACLE时在Linux上设置内核参数的含义
  11. IOS上路_10-简单示例-手势识别2-1
  12. 2020秋 英文科技论文写作与学术报告-期末
  13. 《剑来》语句摘录(四)
  14. SpringBoot 无法捕获 maximum upload size exceeded
  15. vue中使用防抖和截流
  16. 解决IEEE会议模板引用bib文件时出现Bibliography not compatible with author-year citations
  17. oracle实验报告2:: Oracle数据库物理存储结构管理(含实验小结)
  18. Android webview加载页面获取摄像头权限实践(Kotlin)
  19. java马士兵笔记_马士兵java教程笔记2
  20. servlet cannot be resolved to a type的原因及解决方法

热门文章

  1. mysql字符集插入中文数据乱码问题
  2. django restframework Serializers
  3. ionic2——环境配置篇
  4. PHP魔术方法和魔法变量详解
  5. java中的IO流之文件复制
  6. $《第一行代码:Android》读书笔记——第5章 Broadcast
  7. NSURLConnection实现断点续传
  8. Codeforces Round #215 (Div. 2) B. Sereja and Suffixes map
  9. 捕鱼分鱼、出售鱼、平分七筐鱼
  10. 某里巴巴Java工程师常规面试题以及解答