nginx 实现 反向代理 负载均衡

来源:互联网 发布:什么是主域名与子域名 编辑:程序博客网 时间:2024/06/05 16:37

目前正在学习使用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后面的名字;
只是记录下学习使用的过程,还有很多东西没写到,希望遇到问题大家一起交流;