nginx实现负载均衡

mac2025-03-28  12

1、下载Nginx

http://nginx.org/en/download.html

选择Stable version

2、windows环境安装及配置nginx

2.1 下载安装及配置

下载后解压到比如E盘

修改配置文件

E:\software\nginx-1.16.1\conf\nginx.conf

#user  nobody; worker_processes  1;

#error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {     worker_connections  1024; }

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

    sendfile        on;     keepalive_timeout  65;

    #gzip  on;

    #配置系统服务器Ip及端口     upstream a.com{      server 172.17.195.37:8091;     server 172.17.195.37:8092;     }     server {         listen       8090;         server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {             root   html;             index  index.html index.htm;

            #配置代理             proxy_pass http://a.com;              proxy_redirect default;          }         error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }     }

}  

    server 172.17.195.37:8091;     server 172.17.195.37:8092;

就是需要被代理的服务器,假设在这两台服务器部署了站点study

http://172.17.195.37:8091/study

http://172.17.195.37:8092/study

2.2 启动和关闭nginx

启动:

C:\Users\figo>e:

E:\>cd E:\software\nginx-1.16.1

E:\software\nginx-1.16.1>nginx

关闭:

打开cmd执行

taskkill /im nginx.exe /f

 

2.3 测试

浏览器打开http://localhost:8090/study  或者http://172.17.195.37:8090/study  (本机ip172.17.195.37)

就会轮询访问

http://172.17.195.37:8091/study

http://172.17.195.37:8092/study

因为负载策略默认是轮询

 

3、linux环境配置安装及配置nginx

将压缩包上传到/usr/local 依然是直接命令: tar -zxvf nginx-1.16.1.tar.gz cd nginx-1.16.1 配置 其实在 nginx-1.16.1版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。 1.使用默认配置

./configure 2.自定义配置(不推荐)

./configure \ --prefix=/usr/local/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/conf/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi 注:将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

编译安装 make make install

查看nginx在哪 whereis nginx /usr/local/nginx

配置同windows环境

启动 [root@localhost ~]# /usr/local/nginx/sbin/nginx 停止/重启 [root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop(quit、reload) 命令帮助 [root@localhost ~]# /usr/local/nginx/sbin/nginx -h 验证配置文件 [root@localhost ~]# /usr/local/nginx/sbin/nginx -t 配置文件 [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

 

 

4、负载均衡策略

4.1轮询

 

这种是默认的策略,把每个请求按顺序逐一分配到不同的server,如果server挂掉,能自动剔除。

 

upstream a.com{

  server 127.0.0.1:4501; #真实服务器A

  server 127.0.0.1:4502; #真实服务器B

}

 

4.2最少连接

 

把请求分配到连接数最少的server

 

upstream a.com{

 

  least_conn;

  server 127.0.0.1:4501; #真实服务器A

  server 127.0.0.1:4502; #真实服务器B

}

 

 

 

4.3 权重

 

使用weight来指定server访问比率,weight默认是1。以下配置会是server2访问的比例是server1的两倍。

 

upstream a.com{

  server 127.0.0.1:4501  weight=1; #真实服务器A

  server 127.0.0.1:4502  weight=2; #真实服务器B

}

 

4.4 ip_hash

 

每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。

 

upstream a.com{

 

  ip_hash;

  server 127.0.0.1:4501; #真实服务器A

  server 127.0.0.1:4502; #真实服务器B

}

最新回复(0)