nginx配置实例、代理以及负载均衡讲解

       反向代理 假如我们本地启动了一个服务员,我们通过127.0.0.1:8080可以直接访问,但是我们可以配置一台代理服务器,通过代理服务器去访问我们本地的8080服务,这个过程就叫做反向代理。这样做可以隐藏我们真实的IP和端口地址,让外面所有服务只请求我们的代理服务器,由代理服务器转发给我们的真实服务请求数据。

       负载均衡 负载均衡基本只会用在分布式服务器上面,首先通过我们客户端请求反向代理服务器,如果客户端有多个请求到我们的反向代理服务器的话,我们反向代理会将负载分发到我们的不同服务器上面,这个过程就叫负载均衡。

        动静分离 动静分离首先我们可以将动态资源(jsp/serverd等)放到一个服务器,将静态文件单独放到另一个服务器(css/js或者图片等),当我们客户端去请求我们的代理服务器时他会根据我们的配置去不同服务器去不同的数据。这样的做的目的可以加快网站的解析速度和降低单个服务器的压力。

        正向代理什么是正向代理,我们访问A服务器,我们可以不直接访问A服务器,而是访问nginx,由nginx转发到我们的A服务器,这就是跳过直接访问。fanqiang这些都是这个原理

nginx常用命令 :  使用nginx操作命令的前提条件是必须进入nginx的目录 /usr/local/nginx/sbin里面进行操作

  1. 查看版本号 : ./nginx -v
  2. 查看当前nginx状态 :ps -ef | grep nginx
  3.  关闭nginx :  ./nginx -s stop
  4.  启动mginx : ./nginx
  5.  重新加载nginx 配置文件:  ./nginx -s reload
  6. 查看服务器对外开放的端口 : firewall - cmd --list-all

            

nginx配置文件讲解

        nginx配置文件位置 : nginx安装路径下的conf目录下的nginx.conf

        全局块 : 从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx服务器整体运行的指令,比如 : worker_processes 1; worker_processes 值越大,可以支持的并发处理量也越多。

        events块 :events块涉及的指令主要影响nginx服务器与用户的网络连接, 

                           比如:worker_connections  1024; 支持的最大连接数。

        http块 :nginx服务器配置最频繁的部分,他里面包括http全局块和server块

                

  nginx反向代理 :

        演示1 : 我们在浏览器里面输入www.123.com可以通过nginx跳转到我们系统开启的服务里面去。

  1. 首先需要找到我们的系统host文件里面最后面加上配置  127.0.0.1 www.123.com。
  2. 配置nginx文件,如下图所示 :nginx配置实例、代理以及负载均衡讲解_第1张图片

        演示2 : 请求 127.0.0.1:9090/one  和 127.0.0.1:9090/two 跳转到我们系统的8080和8081端口服务请求数据。

server {
        listen       9090;              #配置nginx访问端口
        server_name  192.168.1.64;      #配置IP 
		
		location  /one/ {                #location 表示127.0.0.1  下面的路径 one
            root index;
			index index.html index.jsp;
			proxy_pass http://127.0.0.1:8080/api/wxPay/getToken;  #代理跳转的路径
        }
		
		location  /two/ {                #location 表示127.0.0.1  下面的路径 two
            root index;
			index index.html index.jsp;
			proxy_pass http://127.0.0.1:8001/project/publicAccess/getSteing; #代理跳转的路径
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

            

负载均衡 :上面我们也讲过,负载均衡就是将多个服务器请求通过nginx分发到各个服务器上面去,下面我们就通过案例配置负载均衡,访问127.0.0.1:9090时分别请求我们的8080和8081服务器端口。

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	
	upstream myserver {  # 第一步在http下面加上关键字upstream 取别名创建一个函数
		server 127.0.0.1:8080;    # 需要负载的端口一  
		server 127.0.0.1:8001;    # 需要负载的端口二
	}

    server {
        listen       9090;        #nginx访问端口
        server_name  192.168.1.64;#代理的服务器地址
		
		location  / {
            #http://上面定义的函数名字/我们项目控制层访问路径(两个负载均衡的路径需要一致); 
			proxy_pass http://myserver/api/wxPay/getToken; 
            root index;
			index index.html index.jsp;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

     负载均衡策略 :     

  1.  轮询,nginx默认策略,就是A-B-A-B-A-B.......反反复复,假如A服务器宕机了他会自动剔除;      
  2. weight策略,weight代表权重的意思,默认为1,权重值越高被分配的客户端也就越多。 具体使用方法如下,我们可以直接加到我们配置的端口后面。
    	upstream myserver {
    		server 127.0.0.1:8080 weight=2;
    		server 127.0.0.1:8001 weight=10;
    	}
  3. ip_hash策略,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。(意思就是说A用户和B用户两个用户,如果A用户第一次访问的是8080端口,B用户访问的是8081端口,那么A以后都只会访问8080端口,而B用户后面也只能访问8081端口,防止两台服务器不同产生的session也不同)   
    	upstream myserver {
            ip_hash;           #直接配置到这里就可以了
    		server 127.0.0.1:8080;
    		server 127.0.0.1:8001;
    	}
      
  4. fair策略,根据服务器响应时间来进行配置请求,响应时间越短分配请求越多。(比如A和B两台服务器,如果一个用户访问A服务器如果A服务器还在响应其他请求的话B服务器空闲他就会去访问B服务器,而不会按照轮询或者优先级来进行访问)
    upstream myserver {
    		server 127.0.0.1:8080;
    		server 127.0.0.1:8001;
            fair;     #直接配置在下面可以了
    	}

你可能感兴趣的:(nginx,nginx,服务器)