目录
目录
nginx的反向代理和负载均衡
说明:为了操作方便,我们将所有虚拟机的防火墙都关闭。
本次的ip分配
服务器名 | 作用 | IP地址 | 安装软件 |
node1-1 | 前端服务器 | 192.168.80.61 | tengine2.1.0 |
node1a | 后端服务器 | 192.168.80.41 | tomcat7.0 |
node1b | 后端服务器 | 192.168.80.31 | tomcat7.0 |
结构图
1.nginx的反向代理的使用
反向代理就是前端服务器作为后端服务器的代理,代理的是服务器端,所以叫反向代理,nginx使用proxy_pass指令完成反向代理。
(1)语法
语法: | proxy_pass |
默认值: | — |
上下文: | location , if in location , limit_except |
根据官网说明, 使用proxy_pass 设置后端服务器的协议和地址,还可以设置可选的URI以定义本地路径和后端服务器的映射关系。 这条指令可以设置的协议是“http
”或者“https
”,而地址既可以使用域名或者IP地址加端口(可选)的形式来定义:
proxy_pass http://localhost:8000/uri/;
(2)举例
假如我们有两台tomcat后端服务器,地址是192.168.80.41和192.168.80.31 ,tomcat的端口是8080,启动这两台服务器的tomcat,并且修改首页。
访问41和31虚拟机的tomcat下的web为如下图所示
假设nginx在192.168.80.61中。
在ningx的配置文件的server中,配置两个location,分别代理到上面两个不同的tomcat服务器
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /web1b{
proxy_pass http://192.168.80.31:8080/web1b;
}
location /web1a{
proxy_pass http://192.168.80.41:8080/web1a;
}
}
}
(3)测试代理是否成功
重启nginx后 ,在浏览器中输入不同的地址,测试效果如下:
测试代理成功。
2.负载均衡
(1)负载均衡介绍
在一个nginx服务器中可以配置多个反向代理。使用upstream配置。
ngx_http_upstream_module
模块 允许定义一组服务器。它们可以在指令proxy_pass、 fastcgi_pass和 memcached_pass中被引用到(引自官网)
(2)举例
在192.168.80.61的nginx服务器中,配置一个负载均衡,在location中使用proxy_pass指令,指向负载均衡的名字,为了能看到代理效果,还是使用上面的两个后端服务器的web项目。
nginx.conf配置文件如下,负载均衡默认是加权轮询算法,如果没有写weight,默认权为1。
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream nginx{
server 192.168.80.31:8080;
server 192.168.80.41:8080;
}
server {
listen 80;
server_name www.zdxh.com www.zdxh1.com;
location / {
proxy_pass http://nginx;
index index.html index.htm;
}
}
}
(3)测试效果
重启nginx后,在浏览器中输入地址www.zdxh.com,也可以是ip地址192.168.80.61,连续回车的效果。
总结
本文介绍了nginx的反向代理和负载均衡的最简单应用,复杂配置请看官网文档。