Chinaunix首页 | 论坛 | 博客
  • 博客访问: 652827
  • 博文数量: 98
  • 博客积分: 3145
  • 博客等级: 中校
  • 技术积分: 1902
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-15 12:52
文章分类
文章存档

2021年(1)

2020年(1)

2016年(8)

2015年(3)

2014年(1)

2013年(5)

2012年(4)

2011年(9)

2010年(12)

2009年(42)

2008年(12)

我的朋友

分类: 系统运维

2015-06-03 10:17:22

    三级域名跨域和使用rewrite过程中会丢失post请求和header里面的内容,是目前互联网中常常遇到的问题,比较头疼,很多人是在处理过程中避免使用三级域名,但当实际情况中遇到了没法避免的情况怎么办?下面就一个实际情况中遇到的例子说下如何使用nginx的pass_proxy模块解决三级域名跨域问题。
    问题:
       生产环境中有一个a.b.c.com域名需要调用e.f.g.com这个文件上传接口上传文件,开始简单实用nginx rewrite模块跳转页面,但为了保证安全和用户体验,需要增加用户cookie验证及地址栏不跳转域名,经过测试使用rewirte无法实现cookie的传递,前端javascript脚本拿到用户的参数传递给文件上传接口,后端文件上传接口无法拿到传递的参数,因此rewrite方法无法解决问题,实际过程中,另外一个需要解决的问题是需要对请求的url进行重定向,比如:前端访问a.b.c.com/images_upload 对应的请求接口是e.f.g.com/images接口。
   解决方法:
       经过查看nginx官方文档和多次测试最终的解决方法如下:
       配置a.b.c.com的nginx配置文件,增加pass_proxy配置:
            location /images_upload{

                 proxy_pass http://e.f.g.com/images;
             }
  经过测试,前端传递过来的cookie及post参数均能收到,完美解决此问题。
阅读(3738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~