nginx 负载均衡简单实现

来源:互联网 发布:加密软件怎么破解 编辑:程序博客网 时间:2024/06/06 01:58

nginx 负载均衡简单实现

nginx能够实现负载均衡,在被反向代理的服务器中进行按需的负载均衡配置:
下面是一个配置文件:
#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;    #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 backend {             #ip_hash;             server 192.168.1.120:8989 weight=5;             server 192.168.1.120:8080 weight=10;         }    server {        listen       9922;        server_name  firstProxyServer;        #charset koi8-r;        #access_log  logs/host.access.log  main;        #location / {           #root   html;            #index  index.html index.htm;        #}location /ngtt{            proxy_pass http://backend/ngtt;        }location /testnnnn{            proxy_pass http://localhost:8080/testnnnn;        }        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.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;        #}    } server {        listen       9977;        server_name  secondProxyServer;        #charset koi8-r;        #access_log  logs/host.access.log  main;        #location / {           #root   html;            #index  index.html index.htm;        #}location / {            proxy_pass http://localhost:8080;        }        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.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;    #    }    #}}

其中主要的内容是这里:
upstream backend {             #ip_hash;             server 192.168.1.120:8989 weight=5;             server 192.168.1.120:8080 weight=10;         }    server {        listen       9922;        server_name  firstProxyServer;        #charset koi8-r;        #access_log  logs/host.access.log  main;        #location / {           #root   html;            #index  index.html index.htm;        #}location /ngtt{            proxy_pass http://backend/ngtt;        }location /testnnnn{            proxy_pass http://localhost:8080/testnnnn;        }        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.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;        #}    }


其中权重weight越大,优先级越高。
进行测试的时候是这样,通过对一个服务器进行关闭,然后查看访问时宕机的次数。比如现在两台服务器都开启,现在关闭其中的一台——192.168.1.120:8989,然后再次进行访问,访问完成后,发现没3次会有一次出现宕机的现象。

如果发现了宕机,那么管理员此时可以直接这样配置:
upstream backend {             #ip_hash;             server 192.168.1.120:8989 down;             server 192.168.1.120:8080 weight=10;         }

然后,输入nginx命令:
nginx -s reload即可恢复正常的访问。
此时全力恢复192.168.1.120:8989,恢复成功后,把nginx的配置文件更改回来,再次重新启动(nginx -s reload)即可。
0 0