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配置文件
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>;
}
}