目前正在学习使用nginx作为服务器进行反向代理和负载均衡,所以记录下学的过程;文中所用到的也是从别的博客上学习的,希望不要用于商业用途,仅供学习使用;
这里默认来看文章的都是知道nginx是什么的,也已经有了nginx相关环境了,如果没有去官网(http://www.nginx.cn/install)自己看‘;
1,反向代理
对于前后端分离的项目来说,部署前端项目是很重要的;nginx服务器占用资源少,而且非常简单,自然就是大家的首选;
对于单项目而言,只需要在nginx.conf中简单的配置好location,就很简单;root后面是项目路径,index是主界面;
location / {
root H:\workspace\zmzf_new\xm-levy-ui\dist;
index index.html index.htm;
}
对于多个前端项目部署在同一个nginx服务器中的时候,有两种方案,一种是在nginx.conf中ctrl+c,ctrl+v几个server,修改修改配置就行了,这里不多说了;另外一种是在同一个server中配置多个location来实现同一个端口下,多个项目;
在访问的时候加上具体的路径就行了;
前后端分离项目中还有一个问题不容忽视,浏览器的跨域问题,使用nginx代理还可以解决跨域问题;使用条件是:访问的接口地址不能写死ip,port否则nginx不会去代理你的请求,从而出现跨域;再配置一个location来代理请求:
location /api {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.1.21:9293/api;
}
2,负载均衡
负载均衡就是你得部署多个服务器,当其中一个挂了,通过nginx会自动帮你转发到另外的服务器上;正常访问的时候,如果你仔细看请求的话,也会发现
请求不一样的服务器是完全随机 的;好了,废话不多说直接看代码;
upstream yzq.domain.com {
#ip_hash;
server 192.168.1.215:8089 weight=2;
server 192.168.1.207:18089 weight=1;
}
upstream是放在http中的,跟server同级,yzq.domain.com是我随便起的一个名字,跟下面的一个配置名称一样;upstream中的两个server就分别是
两个服务器的地址了,weight是负载的时候的权重,还有写其他参数,这里不多说了,自己去查;
server {
listen 5555;
server_name localhost;
charset utf-8;
location / {
# proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://yzq.domain.com;
}
}
上面server中的proxy_pass就是upstream后面的名字;
只是记录下学习使用的过程,还有很多东西没写到,希望遇到问题大家一起交流;