Nginx配置负载均衡

一,Nginx常用命令

          

1)         启动Nginx:start nginx

2)         停止Nginx:nginx -s stop

3)         修改配置后重启:nginx -s reload

二,以Tomcat服务器为例进行负载均衡设置

    为了简单,我直接在windows解压了个nginx-1.10.0.zip。

    之后再myeclipse里面部署了同一个项目,为了方便,第一个项目我设置的起始页面为:

    

/*测试nginx*/
	@RequestMapping("/home")
	public String home() {
		//http://localhost:8091/itoo-basic-curriculumschedule/curriculumschedule/home
		return "home1";
	}

       第二个应用程序的起始页面设置的为:

/*测试nginx*/
	@RequestMapping("/home")
	public String home() {
		//http://localhost:8091/itoo-basic-curriculumschedule/curriculumschedule/home
		return "home2";
	}

服务器端口号及应用程序实例:

之后,打开nginx-1.10.0\conf\nginx.conf 这个文件,配置负载均衡的服务器列表及网站路径:

#使用用户和组,windows下不指定
#user  nobody;

#指定工作衍生进程数(一般等于CPU总和数或总和数的两倍,例如两个四核CPU,则总和数目等于8)
worker_processes  1;

#指定错误日志文件存放路径,错误日志级别可选项为【debug/info/notice/warn/error/crit】
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#指定pid存放路径
#pid        logs/nginx.pid;

#event段,定义全局属性
	#工作模式及连接数上限
events {
	#使用网络I/O默写,Linux系统推荐使用epoll,FreeBSD系统推荐使用kequeue;window下不指定
	#user epoll;
	#允许的连接数
    worker_connections  1024;  #设置单个进程最大连接数

}

#设定http服务器,利用他的反向代理功能提供负载均衡支持(还可以反向代理mail)
http {
	#设定mine类型
    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"';

    client_header_buffer_size 1k;
    large_client_header_buffers 4 4k;

    #设定access log
    access_log  logs/access.log  main;

    client_header_timeout 3m;

    client_body_timeout 3m;

    send_timeout 3m;

    sendfile        on;

    tcp_nopush     on;

    tcp_nodelay on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    #开启gzip模块
    	gzip  on;

   	 	gzip_min_length 1100;

    	gzip_buffers 4 8k;

    	gzip_types text/plain application/x-javascript text/css application/xml;

    	output_buffers 1 32k; 

   	 	postpone_output 1460;

    	server_names_hash_bucket_size 128; 

    	client_max_body_size 8m;

    	fastcgi_connect_timeout 300; 

    	fastcgi_send_timeout 300; 

    	fastcgi_read_timeout 300; 

    	fastcgi_buffer_size 64k; 

    	fastcgi_buffers 4 64k; 

    	fastcgi_busy_buffers_size 128k; 

    	fastcgi_temp_file_write_size 128k; 

    	gzip_http_version 1.1; 

    	gzip_comp_level 2; 

		gzip_vary on;

    #定义负载均衡的服务器列表
    upstream Mysite{
    	#ip_hash;
		#同一机器在多网情况下,路由切换,ip可能不同 #weigth参数表示权值,权值越高被分配到的几率越大;

    	server localhost:8091;
    	server localhost:8080;

    }

    #设定虚拟主机
    server {
        listen       80;
        server_name  localhost;
        charset UTF-8;

        #设置本虚拟主机的访问日志
        #access_log  logs/host.access.log  main;

        #定义一个URI的特性
        #location中可以嵌套location
        location / {
        	#‘/’表示对“/”启用负载均衡
        	 	#定义服务器的默认网站根目录位置
            	#root  F:\JavaServer\apache-tomcat-7.0.69-windows-x64\apache-tomcat-7.0.69\webapps\itoo-basic-curriculumschedule;

            	#index  index.jsp;  #定义首页索引文件的名称

            	proxy_pass http://Mysite/itoo-basic-curriculumschedule/curriculumschedule/home;

            #保留用户真实信息
            	proxy_set_header Host $host; 

            	proxy_set_header X-Real-IP $remote_addr; 

            	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

			#允许客户端请求的最大单个文件字节数
				client_max_body_size 10m;
			#缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
            	client_body_buffer_size 128k;
			#跟后端服务器连接超时时间 发起握手等候响应超时时间
            	proxy_connect_timeout 12;
			#连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
            	proxy_read_timeout 90;
			#代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
            	proxy_send_timeout 90;
			#同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
            	proxy_buffer_size 4k;
            	proxy_buffers 4 32k;
			#如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
            	proxy_busy_buffers_size 64k;
			#proxy 缓存临时文件的大小
            	proxy_temp_file_write_size 64k;
            	proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
            	proxy_max_temp_file_size 128m;

        }

        #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配置服务器列表:

注意,这里的名字为Mysite,这个名字之后会使用到。

之后,设置我们的访问地址及访问路径:

       使用location来定义匹配规则:

感觉Mysite起到了一个占位符的作用。

如果有问题,可以去查看log:

  try it.

时间: 2024-10-14 20:42:23

Nginx配置负载均衡的相关文章

Nginx配置负载均衡及反向代理

简单介绍: 1.Nginx优点 Nginx 负均衡实现比较简单,可配置性很强,可以按URL做负载均衡,默认对后端有健康检查的能力.后端机器少的情况下(少于10台)负载均衡能力表现好.其优点主要有: 1)功能强大,支持高并发连接,内存消耗少:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3 万并发连接数,且在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M). 2)成本低廉:Nginx 为开源软件,免费使用. 3)Nginx 工作在网络的7 层,所以它

windows下nginx+tomcat配置负载均衡的方法_nginx

目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Nginx 安装Nginx教程 2.配置两个Tomcat 在本机上配置两个Tomcat,分别为tomcat7-8081.tomcat7-8082. tomcat7-8081访问地址:http://localhost:8081,浏览显示内容:this is 8081 port tomcat7-8082访问

使用Docker+nginx+tomcat7配置负载均衡步骤

本文介绍在Docker上配置简单的负载均衡,宿主机为Ubuntu 14.04.2 LTS,两个CentOS容器,宿主机安装Nginx,两台容器安装tomcat7.结构如下: 此方案的原理是将宿主机的端口和docker容器的端口做一个映射(即访问宿主机的某端口会映射到docker容器对应的端口),然后在宿主机通过配置Nginx,即可达到访问宿主机的某端口,按规则分配到指定的服务地址,即完成了负载均衡. 配置步骤 1.准备宿主机,宿主机是Ubuntu 14.04.2 LTS,安装在Vmware中,具

详解Nginx HTTP负载均衡和反向代理配置_nginx

当前大并发的网站基本都采用了Nginx来做代理服务器,并且做缓存,来扛住大并发.先前也用nginx配置过简单的代理,今天有时间把整合过程拿出来和大家分享,不过其中大部分也是网上找来的资源. nginx完整的反向代理代码如下所示  : [root@data conf]# vim nginx.conf user www www; worker_processes 10; error_log /var/log/nginx/nginx_error.log; pid logs/nginx.pid; wor

详解Nginx中的geo模块与利用其配置负载均衡的示例_nginx

geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module. ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端IP地址.geo指令语法: geo [$address] $variable { ... } 默认值: - 配置段: http 定义从指定的变量获取客户端的IP地址.默认情况下,nginx从$remote_addr变量取得客户端IP地址,但也可以从其他变量

linux下Nginx+Tomcat负载均衡配置方法_nginx

Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK安装: #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz ;mkdir -p /usr/java/ ;mv jdk1.7.0_25/ /usr/java/ 下. #然后配置

Linux环境下Nginx 通过upstream如何配置负载均衡以及实现

一,服务器准备情况,四台: 1,前段服务器: 192.168.1.112  hosts定向测试域名nginx.21yunwei.com 192.168.1.113 备用前端服务器. 后端web服务器池web_pools: 192.168.1.102 192.168.1.103 2,环境:统一centos 6 前端服务器安装nginx.环境安装这里就不写了,可以参考文章<linux下如何安装nginx环境配置>部署nginx环境. 后端web服务器 池统一安装apache:yum install

nginx ip_hash 负载均衡问题

问题描述 nginx ip_hash 负载均衡问题 nginx配置如下: #user nobody; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 定义负载均衡服务器列表 upstream svr_balance{ ip_has

使用NGINX Plus负载均衡Kubernetes服务

本文讲的是使用NGINX Plus负载均衡Kubernetes服务,[编者的话]此篇文章是Nginx的Michael Pleshakov发表在Nginx官方博客的一篇博文,通过这篇文章概括回顾了Kubernetes暴露服务相关的解决方案,并对最新的Ingreess API进行了说明,最后给出了Kubernetes通过集成NGINX Plus来暴露服务到互联网的解决方案.这个方案解决了目前Kubernetes暴露服务的短板,整个实现过程也比较简单,步骤清晰,具有很强的参考性.我们华三目前也在调研这