Nginx关键技术学习及运用(三)-Nginx配置文件介绍及常见的负载均衡模式

Nginx配置文件介绍

Nginx配置文件

  • 配置文件所在位置

        默认安装Nginx服务器的基础配置文件: /usr/local/nginx/conf/nginx.conf

  • 文件结构

       (1)全局块

       (2)events块

                 配置影响Nginx服务器允许用户访问的网络连接

        (3)HTTP块

                 -- 嵌套多个server

                 -- 配置反向代理功能提供负载均衡

        (4)server块

                 -- 配置虚拟主机的相关信息

        (5)location块

                 -- 请求URL过滤,正则匹配

构建反向代理

    Nginx只处理静态不处理动态内容,动态内容交给后台Tomcat处理

实现负载均衡

    1、轮询

           (1)Nginx的配置

#运行服务器的用户组 默认安装为nobody; 
#user  nobody; 

#配置允许生成的worker_processes  一般根据自己服务器的CPU设置
worker_processes  1;

#全局日志的存放路径
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#配置Nginx进行的存放路径
#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 可以存在多个
	upstream test_server {
		#代理服务器的实际访问地址
		server 127.0.0.1:8080;
		server 127.0.0.1:8081;
	}
   
	server {
		listen 80;
		#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址 
		server_name test.com;
		root /data/test; # 前端静态工程
		
		location / {
			#设置默认页
			index  index.html;
		}
		
		location /testservlet {
			#后端的Web服务器获取用户真实IP
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			
			# 反向代理地址
			proxy_pass http://test_server; 
		}
		
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
			expires 2h;
		}
		
		error_page 404 /404.html;
			location = /40x.html {
		}

		error_page 500 502 503 504 /50x.html;
		location = /50x.html {
		}
	   
		access_log /data/test/logs/access_log.log;
	}	


}

--》检查配置文件修改是否正确--》对于常见错误赘述

--》完成

           (2)Nginx的启动

Tomcat发布项目部分不赘述--》启动8080端口Tomcat

--》启动8081端口Tomcat

--》上传Nginx静态文件

--》启动Nginx

--》因为test.com并非是真是的域名,因此需要修改本地host文件,地址c:\windows\system32\drivers\etc\,因为WIN10管理员权限原因无法进行修改,在附件中会上传获取管理员权限的注册表,注册后右键文件就会多一个获取管理员权限选项

--》完成

           (3)运行说明

                      访问test.com nginx会将第一次访问代理到8080服务器,再次访问会将访问代理到8081服务器,依次轮询

    2、热备

           (1)Nginx的配置

#运行服务器的用户组 默认安装为nobody; 
#user  nobody; 

#配置允许生成的worker_processes  一般根据自己服务器的CPU设置
worker_processes  1;

#全局日志的存放路径
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#配置Nginx进行的存放路径
#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 可以存在多个
	upstream test_server { # 热备模式
		#代理服务器的实际访问地址
		server 127.0.0.1:8080;
		server 127.0.0.1:8081 backup;
	}
   
	server {
		listen 80;
		#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址 
		server_name test.com;
		root /data/test; # 前端静态工程
		
		location / {
			#设置默认页
			index  index.html;
		}
		
		location /testservlet {
			#后端的Web服务器获取用户真实IP
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			
			# 反向代理地址
			proxy_pass http://test_server; 
		}
		
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
			expires 2h;
		}
		
		error_page 404 /404.html;
			location = /40x.html {
		}

		error_page 500 502 503 504 /50x.html;
		location = /50x.html {
		}
	   
		access_log /data/test/logs/access_log.log;
	}	


}

           (2)Nginx的启动

--》检查配置文件修改是否正确

--》重启Nginx

--》完成

           (3)运行说明

                      8080服务器作为主服务器,当8080服务宕机后8081开始工作,用户再次访问,Ngixn会将请求代理到8081服务器

    3、权重

           (1)Nginx的配置

#运行服务器的用户组 默认安装为nobody; 
#user  nobody; 

#配置允许生成的worker_processes  一般根据自己服务器的CPU设置
worker_processes  1;

#全局日志的存放路径
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#配置Nginx进行的存放路径
#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 可以存在多个
	upstream test_server { # 权重模式
		#代理服务器的实际访问地址
		server 127.0.0.1:8080;
		server 127.0.0.1:8082 weight=2;
	}
   
	server {
		listen 80;
		#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址 
		server_name test.com;
		root /data/test; # 前端静态工程
		
		location / {
			#设置默认页
			index  index.html;
		}
		
		location /testservlet {
			#后端的Web服务器获取用户真实IP
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			
			# 反向代理地址
			proxy_pass http://test_server; 
		}
		
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
			expires 2h;
		}
		
		error_page 404 /404.html;
			location = /40x.html {
		}

		error_page 500 502 503 504 /50x.html;
		location = /50x.html {
		}
	   
		access_log /data/test/logs/access_log.log;
	}	


}

           (2)Nginx的启动

                    同上

           (3)运行说明

                     当访问量较大时,Nginx会优先将更多的访问代理到8081服务器

    4、IP地址hash

         解决Tomcat之间的session共享

(1)Nginx的配置

#运行服务器的用户组 默认安装为nobody; 
#user  nobody; 

#配置允许生成的worker_processes  一般根据自己服务器的CPU设置
worker_processes  1;

#全局日志的存放路径
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#配置Nginx进行的存放路径
#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 可以存在多个
	upstream test_server { 
        #ip 地址hash 解决Tomcat之间session共享
		ip_hash;
		#代理服务器的实际访问地址
		server 127.0.0.1:8080;
		server 127.0.0.1:8082 weight=2;
	}
   
	server {
		listen 80;
		#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址 
		server_name test.com;
		root /data/test; # 前端静态工程
		
		location / {
			#设置默认页
			index  index.html;
		}
		
		location /testservlet {
			#后端的Web服务器获取用户真实IP
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			
			# 反向代理地址
			proxy_pass http://test_server; 
		}
		
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
			expires 2h;
		}
		
		error_page 404 /404.html;
			location = /40x.html {
		}

		error_page 500 502 503 504 /50x.html;
		location = /50x.html {
		}
	   
		access_log /data/test/logs/access_log.log;
	}	


}

           (2)Nginx的启动

                    同上

           (3)运行说明

                      ip_hash;会将同意客户端连续的WEB请求分配到同意服务器。除了热备模式外,轮询、权重都存在Tomcat之间session共享的问题,因此轮询、权重模式通常需要解决Tomcat之间session共享的问题。

附件:

链接:https://pan.baidu.com/s/14JKJpFe8xC7sc70FtmcNsw 
提取码:ojcz 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丨Anna丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值