nginx和跨域解决方案

1、引入nginx的原因(反向代理)。
我们可以使用hosts修改域名直接指定IP地址,但是只能访问默认端口80。这是远远不够的。
80是http协议的默认端口,是在输入网站的时候其实浏览器(非IE)已经帮你输入协议了,所以你输入http://baidu.com,其实是访问http://baidu.com:80。

2、nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:反向代理、负载均衡、动态路由、请求过滤。

web服务器分2类:
–web应用服务器,如:tomcat、resin、jetty
–web服务器,如:Apache 服务器、Nginx、IIS
区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。
并发:web服务器的并发能力远高于web应用服务器。

代理:通过客户机的配置,实现让一台服务器(代理服务器)代理客户机,客户的所有请求都交给代理服务器处理。
反向代理:用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器。

3、nginx安装
在虚拟机上安装centos然后安装nginx

1)conf:配置目录
2)contrib:第三方依赖
3)html:默认的静态资源目录,类似于tomcat的webapps
4)logs:日志目录
5)nginx.exe:启动程序

nginx可以通过命令行来启动,操作命令:
–启动:start nginx.exe
–停止:nginx.exe -s stop
–重新加载:nginx.exe -s reload

完整流程:
1)浏览器准备发起请求,访问http://mamage.leyou.com,但需要进行域名解析
2)优先进行本地域名解析,因为我们修改了hosts,所以解析成功,得到地址:127.0.0.1
3)请求被发往解析得到的ip,并且默认使用80端口:http://127.0.0.1:80
本机的nginx一直监听80端口,因此捕获这个请求
4)nginx中配置了反向代理规则,将manage.leyou.com代理到127.0.0.1:9001,因此请求被转发
5)后台系统的webpack server监听的端口是9001,得到请求并处理,完成后将响应返回到nginx
6)nginx将得到的结果返回到浏览器

4、跨域
跨域的三种情况:
域名不同 www.jd.comwww.taobao.com
域名相同,端口不同 www.jd.com:8080与 www.jd.com:8081
二级域名不同 item.jd.com 与miaosha.jd.com

跨域不一定会有跨域问题。跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。因此:跨域问题 是针对ajax的一种限制。

目前比较常用的跨域解决方案有3种:
–Jsonp
最早的解决方案,利用script标签可以跨域的原理实现。
限制:需要服务的支持,只能发起GET请求

  • nginx反向代理
    思路是:利用nginx把跨域反向代理为不跨域,支持各种请求方式
    缺点:需要在nginx进行额外配置,语义不清晰
  • CORS
    规范化的跨域请求解决方案,安全可靠。
    优势:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值