Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中。
在 Linux
系统安装 Tomcat
,使用默认端口8080
,在conf目录下的server.xml
配置文件中,如下,将port改为808
。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Tomcat 安装文件放到 Linux系统中,解压。
Tomcat的路径:/usr/feng/apach-tomcat/tomcat8081下
进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器。
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
firewall-cmd --list-all # 查看已经开放的端口号
在bin目录下开启Tomcat,使用命令
./startup.sh
在Windows
系统的Host
文件进行域名和ip对应关系的配置
添加内容到Host
文件中
192.168.230.130 www.123.com
server {
listen 80;
server_name 192.168.230.130;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://127.0.0.1:80880
index index.html index.html
如上配置,监听80
端口,访问域名为www.123.com
,不加端口号时默认80
端口,所以访问该域名时会跳转到127.0.0.1:8080
路径上,所以在浏览器上输入www.123.com
,即可
1.增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负 载均衡
2.客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端。
3.这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成 本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂 度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易 造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情 况呢?
4.我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能 满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量 是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能 够满足需求的。那么怎么办呢?上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题 的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解 决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 所说的负载均衡
在浏览器地址栏输入http://208.208.128.122/deu/a.html
,实现负载均衡效果,平均在8021
和8082
端口中
Tomcat
服务器,一台8081
,一台8082
按照上面的反向代理配置,但需要添加东西,如下:
在两台Tomcat
里面webapps
目录中,创建名称是edu
的文件夹,在文件夹中创建页面a.html
,用于测试。
分别配置8081和8082,在vod
文件下使用命令:
cp a.html ../edu/
cd ../edu/ # 进入到edu目录下
cat a.html # 查看内容
http://208.208.128.122:8081 / 8082/edu/a.html
upstream myserver {
server 208.208.128.122:8081;
server 208.208.128.122:8082;
}
server {
listen 80;
server_name 208.208.128.122;
#charser koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://myserver; #重点
#proxy_pass http://127.0.0.1:8081;
index index.html index.htm;
8082同理
https://208.208.128.122/edu/a.html
随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题, 顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应 足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品, 很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务,而且 Nginx 提供了几种分配方式(策略)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
weight
代表权重,默认1
,权重越高被分配的客户端越多
upstream myserver {
server 208.208.128.122:8081 weight=10;
server 208.208.128.122:8082 weight=10;
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
ip_hash
每个请求按访问ip
的 hash
结果分配,这样每个访客固定访问一个后端服务器
upstream myserver {
ip_hash;
server 208.208.128.122:8081 ;
server 208.208.128.122:8082 ;
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
fair(第三方)
,按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver {
server 208.208.128.122:8081 ;
server 208.208.128.122:8082 ;
fair;
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}