部署静态资源

server{
	listen 8080;
	server_name 127.0.0.1;
	location /{
		root html;
		index index.html;
	}
}
server{
	listen 8080 default_server;
	server_name localhost;
	default_type text/plain;
	return 444 'This is a error request';
}

反向代理

Nginx反向代理模块的指令是由ngx_http_proxy_module模块进行解析,该模块在安装Nginx的时候已经自己加装到Nginx中了,接下来我们把反向代理中的常用指令一一介绍下:

proxy_pass
proxy_set_header
proxy_redirect

单端口反向代理

server {
	listen 80;
	server_name localhost;
	location /{
		#proxy_pass <http://192.168.200.146>;
		proxy_pass <http://192.168.200.146/>;
	}
}
当客户端访问 <http://localhost/index.html,效果是一样的>
server{
	listen 80;
	server_name localhost;
	location /server{
		#proxy_pass <http://192.168.200.146>;
		proxy_pass <http://192.168.200.146/>;
	}
}
当客户端访问 <http://localhost/server/index.html>
这个时候,第一个proxy_pass就变成了http://localhost/server/index.html
第二个proxy_pass就变成了http://localhost/index.html效果就不一样了。

多端口反向代理

实现效果:

访问 <http://192.168.0.105:9001/edu/> 直接跳转到 127.0.0.1:8080
访问 <http://192.168.0.105:9001/vod/> 直接跳转到 127.0.0.1:8081

安装两个 Tomcat 分别定义端口为 8001,8002

配置 nginx配置文件

image.png

负载均衡

1、准备两台 tomcat 服务器,一台8001,一台8002

2、 在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建页面a.html,用于测试

3、配置nginx配置文件

# 在http模块中配置
upstream myserver{
         server  192.168.0.105:8001 weight=1;
         server  192.168.0.105:8002 weight=2;
    }

# 在server模块配置
         listen       80;
         server_name  192.168.0.105;
         location / {
            proxy_pass <http://myserver>;
            root   html;
            index  index.html index.htm;
        }

4、nginx提供了几种分配方式(策略)

#1.轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
#2.weight
weight 代表权重,默认是1,权重越高被分配的客户端越多。
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如:

upstream server_pool{
	server 192.168.5.21 weight=10;
	server 192.168.5.22 weight=10;
}
#3. ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定一个后端服务器,可以解决session的问题。例如:
upstream server_pool{
	ip_hash
	server 192.168.5.21:80;
	server 192.168.5.22:80;
}
#4.fair(第三方,需要安装第三方模块)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
	server 192.168.5.21:80;
	server 192.168.5.22:80;
	fair;
}
upstream backend{
		server 192.168.44.112:9001 weight=10;
		server 192.168.44.112:9002 weight=10;
		server 192.168.44.112:9003 weight=5;
	}
	server{
		listen 8083;
		server_name localhost;
		location /{
		 proxy_pass <http://backend>;
		}
	}