前几天工做中和前端部门的同窗配合时遇到一个问题:前端同窗调用服务器端接口时,服务器端接口获取不到cookie。项目是先后端分离,服务器端使用spring mvc提供java接口,前端使用nginx作反向代理解决跨域问题,前端框架使用vue。html
当时因为对ngix不太了解,只知道前端同窗使用nginx作反向代理时,在测试环境配置的是ip+端口号的方式访问接口,因而就误觉得是没有经过域名访问接口,因此服务器端接口才获取不到cookie。还理所固然的找前端同窗“纠正错误”,通过一番排查,最终发现问题的罪魁祸首是vue,vue的工做原理是首页页面加载和刷新页面是会经过前端虚拟服务器和后端服务器接口交互,这时是服务器端之间的接口调用,前端同窗没有在前端服务器向后端服务器接口正确的发送cookie,致使接口获取不到cookie。前端
如今想一想真的很汗颜,真是无知者无畏,因此就决定要学一学Nginx。这篇文章就记录一下个人一个入门实验,实验目的:在本机配置一个nginx反向代理服务器,监听8089端口。达到访问http://localhost:8089,会经过nginx代理,访问http://localhost:8080的目的。vue
环境:32位windows、tomcat 、Spring MVCjava
前期准备:安装tomcat,并新建Spring MVC项目,访问http://localhost:8080/,可以打开Sping MVC项目对应的action,具体作法这里很少说,详情请见个人博文:http://www.cnblogs.com/cs-js/p/7295414.htmlnginx
第一步:安装Nginxspring
下载连接:https://kevinworthington.com/nginx-for-windows/windows
我本机安装在了C:\nginx目录下,安装完成后,能够在文件夹里面看到Strat-nginx和Stop-nginx两个文件,一个是启动nginx服务,一个是关闭nginx服务。另外,还能够看到conf这个文件夹,ngix的配置文件nginx.conf就是放在这个文件夹里面。配置反向代理服务器只须要在配置文件里增长几个配置就能够了。后端
第二步:配置nginx跨域
打开nginx.conf配置文件,会看到在http节点,在http节点下有一个默认的server子节点,咱们不用去管它,要作的就是在http节点下新增一个server节点,具体的配置以下:tomcat
#虚拟主机的配置 server { #监听端口 listen 8090; #域名能够有多个,用空格隔开,代理访问的真实服务器 server_name localhost:8080; error_page 404 /404.html; charset utf-8; #后端的Web服务器能够经过X-Forwarded-For获取用户真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $host; #如下是一些反向代理的配置 #反向代理时候,设置nginx将域名携带到tomcat服务器 proxy_set_header Host $host; #容许客户端请求的最大单文件字节数 client_max_body_size 10m; #对 "/" 启用反向代理 location / { #配置代理访问的真实uri proxy_pass http://localhost:8080; } }
这样,就配置了一个简单的反向代理服务器。是否是很简单,这里须要重点解释一下server节点和它里面的各个配置项的含义:
server:配置一个虚拟主机,一个server接口能够监听一个端口,nginx能够配置监听多个端口,作多个反向代理,每一个反向代理都须要配置一个server节点。
listen:监听的端口,就是访问的nginx服务器的端口。
server_name:真实服务器的名称,能够配成ip+端口或者域名+端口
location:把不一样方式的请求定位到不一样的处理方式上,这里我配置的是“/”,意思就是配置成nginx对"/"这种请求作转发
proxy_pass:转发到真实服务器的uri。这里就是拦截http:localhost:8089/,而后转发到http://localhost:8080
总结,nginx的使用很简单,只须要简单的配置就能够完成高性能的反向代理和负载均衡功能,有兴趣的同窗能够在网上深刻研究一下,而后把好的资源共享一下,个人邮箱5915305@qq.com。