一、nginx 解决端口问题
1、什么是nginx?
nginx 是一个高性能的web和反向代理服务器
2、Web服务器分2类:
- web应用服务器,如:
- tomcat
- resin
- jetty
- web服务器,如:
- Apache 服务器
- Nginx
- IIS
区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。
web应用服务器可以处理动态资源,如servlet 并发:web服务器的并发能力远高于web应用服务器。
3、nginx作为反向代理
代理:通过对客户机的配置,让一台服务器代理客户机,客户的所有请求都交给代理服务器来处理
(例如:浏览器的代理)
反向代理:用一台服务器来代理真实的服务器,用户访问时,不在访问真实的服务器,而是访问代理
服务器
总结:代理 是 代理客户端
反向代理是代理服务器
nginx 反向代理的配置
模板:
server {
listen 80;
server_name manage.leyou.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:9001;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
4、跨域问题
4.1 什么是跨域
域名不同
域名相同,端口不同
二级域名不同 item.jd.com (二级域名.一级域名.顶级域名)
如果域名和端口相同,但是请求的路径不同,则不属于跨域
4.2 为什么有跨域问题
跨域不一定会有跨域问题。
因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。
因此:跨域问题是针对ajax的一种限制。
4.3 跨域问题的解决办法
1)jsonp :最早的解决办法,利用script标签可以跨域的原理实现
限制:只能发起get请求
2)CORS:规范化的跨域请求解决方案,安全可靠
优势:在服务端可以控制是否允许跨域,可以自定义规则
支持各种请求方式
缺点:会产生额外的请求
5、CROS解决跨域问题
浏览器将ajax请求分为两类,其处理方案略有差异:简单请求,特殊请求
简单请求
当浏览器发起的ajax 请求是简单请求时,会在请求头中携带一个字段:Origin,
Origin中,会指出当前请求属于哪个域(协议+域名+端口)。
服务会根据这个值决定是否允许其跨域。
如果服务器允许跨域,需要在返回的响应头中携带下面信息:
Access-Control-Allow-Origin: http://manage.leyou.com
Access-Control-Allow-Credentials: true
复杂请求
特殊请求会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。
浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。
来源:https://www.cnblogs.com/houchen/p/12381500.html