《JAVA从零架构》第5天—Nginx 的HTTP反向代理和负载均衡模块

1、Nginx通常被用作后端服务器的反向代理,它可以很方便的实现负载均衡,提高服务器的处理能力。

Nginx通过upstream模块来实现简单的负载均衡,在upstream块内,定义一个服务器列表,默认的方式是轮询,

如果要确定同一个访问者发出的请求总是由同一个后端服务器来处理,可以设置ip_hash(不建议)

以下为简单的负载均衡配置

upstreamqingmiao.online

ip_hash

server 127.0.0.1:8080 weight=5;

#如果一个服务器down了不要注释起来,最好在后面加一个down关键字,这样负载均衡服务器就会跳过这个节点

server 127.0.0.1:8081 weight=5 down;

server 127.0.0.1:8080 weight=5;

}

以下为反向代理配置

server{

listen 80;

server_name server1

location / {

#在访问http://qingmiao.online时,会反向代理到后台配置的服务器上

proxy_passhttp://qingmiao.online

}

}

2、Nginx实现动静分离,实际操作就是在反向代理时,如果是配置指定的静态资源,那么就直接从Nginx发布的路径去读取,而不需要从后台服务器读取了

接下来,改造location配置。

server {

root /usr/common/tomcat-8.5/webapps/static;

#图片处理

location ~* .*\.(jpg|jpeg|gif|png|swf|ico)$ {

if(-f $request_filename) {

}

}

#html\js\css 文件处理

location ~* .*\.(html|htm|js|css)$ {

}

}

这里我们没有在location的代码块中配置转向的url,Nginx反向代理模块会自动使用root 所配置的Url作为根目录,html、js等文件中的Url修改为该url即可

3、大型项目应用模块Geo和GeoIP

这两个模块主要用于全局负载均衡,可以根据不同的客户端IP来访问不同的服务器,例如:北京的用户访问北京的服务器,上海的用户则访问上海的服务器,示例如下:

http{

geo $city{

default default;

#定义某个网段的地址使用某个服务器

127.0.0.0/24 beijing;

127.0.0.1/32 shanghai;

upstream default.server{

server 192.168.10.2;

}

upstreambeijing.server{

server 192.168.10.3;

}

upstreamshanghai.server{

server 192.168.10.4;

}

server{

listen 80;

location / {

proxy_pass http://$geo.server$request_uri;

}

}

}

}

而geoIP模块使用是有前提的,这个模块需要geo数据库和读取数据库的库文件,因为某个国家或城市的IP是有规则的。

几篇简单的文章已经把Nginx常用的东西介绍了一篇,实际使用中知道有这些模块,具体去查询文档就可以了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180625G094O600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券