注意:以下案例在Windows系统计算机作为宿主机,Linux CentOS 作为虚拟机的环境中实现
一,Nginx配置实例-反向代理
1.反向代理 案例一
实现效果:使用nginx反向代理,访问 www.123.com 直接跳转到127.0.0.1:8080
准备工作
-
启动一个 tomcat
在linux系统安装tomcat;将tomcat安装文件放到liunx系统/opt
中,解压;进入tomcat的bin目录中,./startup.sh
启动tomcat服务器 ,使用默认端口8080
-
linux本机访问:
localhost:8080
-
在windows系统中通过浏览器访问tomcat服务器,注意防火墙或开放端口
-
映射域名,通过修改本地
C:/Windows/System32/drivers/etc/hosts
文件,将www.123.com
映射到192.168.137.129
-
配置完成之后,访问
www.123.com:8080
现在,我们如何做到访问 www.123.com 便可以跳转到 Tomcat初始界面呢?
这里就要用到 Nginx的反向代理
。
在nginx.conf
配置文件中增加如下配置:
2.反向代理 案例二
实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口服务
nginx监听端口为
9000
,
访问http://127.0.0.1:9000/edu/
直接跳转到127.0.0.1:8080
访问http://127.0.0.1:9000/vod/
直接跳转到127.0.0.1:8081
准备工作
第1步,准备两个tomcat,一个8080端口,一个8081端口,并准备好测试的页面
webapps/edu/index.html
页面内容:8080!!
webapps/vod/index.html
页面内容:8081!!
由于一个ip服务器上启动两个tomcat,端口不能相同。所以,需要修改端口:22行8005
->9005
;69行8080->8081
;
第2步,修改nginx的配置文件,在http块中添加server{}
访问测试:
这里对location
指令做一下说明:
该指令用于匹配 URL。
语法如下:
1、=
:用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~
:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*
:用*于表示 uri 包含正则表达式,并且不区分大小写。
4、^~
:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
*注意:如果 uri 包含正则表达式
,则必须要有~
或者 ~*
标识。
二,Nginx配置实例-负载均衡
实现效果
浏览器地址栏输入地址 http://192.168.137.129/edu/a.html
,负载均衡效果,将请求平均分配到8080
和8081
两台服务器上。
准备工作
(1)准备两台tomcat服务器,一台8080
,一台8081
(2)在两台tomcat里面webapps
目录中,创建名称是edu
文件夹,在edu文件夹中创建页面a.html
(让a.html内容不一样,查看效果),用于测试
负载均衡配置
upstream称为上游服务器,即真实处理请求的业务服务器。
nginx分配服务器策略
随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx就是其中的一个,在linux下有Nginx、LVS、Haproxy等等服务可以提供负载均衡服务,而且Nginx提供了几种分配方式(策略):
1. 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2. weight
weight代表权,重默认为1,权重越高被分配的客户端越多
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:
upstream server_pool{
server 192.168.10.1 weight=1;
server 192.168.10.2 weight=2;
server 192.168.10.3 weight=3;
}
3. ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如:
upstream server_pool{
ip_hash;
server 192.168.10.1:80;
server 192.168.10.2:80;
server 192.168.10.3:80;
}
4. fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
server 192.168.10.1:80;
server 192.168.10.2:80;
server 192.168.10.3:80;
fair;
}
5. 其他参数
三,Nginx配置实例-动静分离
Nginx 动静分离简单来说就是把动态请求
跟静态请求
分开,Nginx 处理静态请求,Tomcat处理动态请求。
动静分离从目前实现角度来讲大致分为两种:
- 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
- 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。
通过 location 指定不同的后缀名
实现不同的请求转发。
准备
项目静态资源准备 |
---|
nginx配置
找到nginx安装目录,打开/conf/nginx.conf配置文件
添加监听端口、访问服务名字;重点是添加location;
最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功。
测试一
(1)浏览器中输入地址:http://192.168.137.129/image/01.jpg
- 因为配置文件中设置了
autoindex on
,所以通过访问目录时可以列出该目录问题。注意:文件路径的斜线
。
(2)在浏览器地址栏输入地址:http://192.168.137.129/www/a.html
测试二
(1)如果开启反向代理,访问tomcat动态资源jsp,jsp中引用的静态资源可以从nginx服务器中进行加载。
(2)建立jsp部署到tomcat8080/webapps/edu
目录下;tomcat8081/webapps/edu
目录下
jsp内容如下 |
---|
(3)测试结果
测试 |
---|