本来我是不涉及到后端领域,因为后续的项目会涉及到跨域和单点登录,我就查资料了解下关于nginx的反向代理,算是一个微末的经验
1.http请求都是从调用方的浏览器,发送请求到http服务器,http服务器在把请求转到应用服务器
2.应用服务器处理之后,返回给http服务器,http服务器在把响应给调用方的浏览器
3.在这个过程中有两个地方可以曾加响应头,一个是应用服务器,一个是http服务器(nginx)
接下来讲nginx配置,讲之前先了解一下虚拟主机
虚拟主机的意思是,多个域名指向同一个服务器,服务器根据不同的域名,把请求转到不同的应用服务器,看上去好像有多个主机,实际上就一个主机,这就是虚拟主机。
1.被调用方虚拟主机配置,版本1.11.5
- host配置,打开window里host文件里面,映射一个本地域名 127.0.0.1 b.com (表示被调用方的域名) 保存
- 打开nginx的config目录,新建一个vhost文件夹,在这里存放虚拟主机的文件
- 打开nginx.conf,在最后面增加一句话,include vhost/*.conf;(这句话的意思是,用nginx载入这个目录下面所有后缀为conf的文件)
- 然后在vhost的文件夹里新建一个b.com.conf的文件,使用nginx语法里面创建一个节点
server{
listen 80; // 监听端口 80
server_name b.com; // 监听域名
location /{ // 所有请求转到这里
proxy_pass http://localhost:8080/; // 被调用方的端口 8080
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Max-Age 3600;
add_header Access-Control-Allow-Credentials true; // 增加支持cookie相应头
// $http_origin 请求头里的origin的值
add_header Access-Control-Allow-Origin $http_origin; //带cookie的时候,origin必须是全匹配,不能使用*
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
// 域解命令处理
if ($request_method == OPTIONS){ // 请求方法是不是options
return 200
}
}
}
2.打开命令窗口,启动nginx, start nginx.exe
3.浏览器地址输入b.com,查看启动成功(配合测试用例来测试)
4.发现有cookie报错因为没有传,所以cookie是被调用方携带的,chrome浏览器控制台里输入 document.cookie="cookie1=123" 回车
最后测试成功,end。