nginx负载均衡配置

1、nginx官网下载安装包。http://nginx.org/en/download.html

2、解压后文件夹

image.png

3、进入conf文件夹,修改nginx.conf文件

########### 每个指令必须有分号结束。#################

#user  nobody;#配置用户或者组,默认为nobody nobody。

worker_processes  1;#允许生成的进程数,默认为1


#error_log  logs/error.log;#制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;


#pid        logs/nginx.pid; #指定nginx进程运行文件存放地址



events {

    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on

    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off

    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

    worker_connections  1024;#最大连接数,默认为512

}



http {

    include       mime.types;#文件扩展名与文件类型映射表

    default_type  application/octet-stream;#默认文件类型,默认为text/plain

    #access_log off; #取消服务日志   

    #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;#允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。

    #tcp_nopush     on;


    #keepalive_timeout  0;

    keepalive_timeout  60; #连接超时时间,默认为75s,可以在http,server,location块。


    gzip  on;

    upstream mysvr { 

      server 127.0.0.1:8090 weight=1;

      server 127.0.0.1:8091 weight=1;

    }

    server {

        listen       80;#监听端口

        server_name  localhost;#监听地址


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        

        location / {         

           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表         

        } 

        #error_page  404              /404.html;

error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

       


        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #

        #location ~ \.php$ {

        #    proxy_pass   http://127.0.0.1;

        #}


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        #

        #location ~ \.php$ {

        #    root           html;

        #    fastcgi_pass   127.0.0.1:9000;

        #    fastcgi_index  index.php;

        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        #    include        fastcgi_params;

        #}


        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    }



    # another virtual host using mix of IP-, name-, and port-based configuration

    #

    #server {

    #    listen       8000;

    #    listen       somename:8080;

    #    server_name  somename  alias  another.alias;


    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}



    # HTTPS server

    #

    #server {

    #    listen       443 ssl;

    #    server_name  localhost;


    #    ssl_certificate      cert.pem;

    #    ssl_certificate_key  cert.key;


    #    ssl_session_cache    shared:SSL:1m;

    #    ssl_session_timeout  5m;


    #    ssl_ciphers  HIGH:!aNULL:!MD5;

    #    ssl_prefer_server_ciphers  on;


    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}


}

4、解决session共享问题

4.1:session存放的东西需要序列化

image.png

4.2 tomcat启动集群模式

负载里的每台tomcat都需要开启

修改tomcat里的service.xml

image.png

注,但是此时由于tomcat1、tomcat2部署同一套工程,如果有数据直接写往session,而且不是使用的cookie存放session的key(由于访问地址使用ip,并不适用域名,所以没法使用cookie),会造成两次访问session id不一致。此时就需要做session复制或共享。需要以下操作:

image.png

4.3 在工程代码中web.xml添加节点<distributable/> 即可


到此为止基本完工了,接下来就是测试了

多次访问,发现Server Info的ip跟端口一直处于ip1,ip2轮询。但是下面的sessionid 都一样。即可


windows下nginx命令:

关闭:nginx.exe -s stop

开启:start nging.exe

重启 nginx.exe - s reload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值