最新动态
nginx日志切割、反向代理(proxy_pass)与负载均衡(upstream)
2024-11-19 03:11

1.1、基本概念

nginx日志切割、反向代理(proxy_pass)与负载均衡(upstream)

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.2负载均衡策略

1)一种是通过硬件来进行解决,常见的硬件有F5、Array等商用的负载均衡器,但是它们是比较昂贵的

2)一种是通过软件来进行解决的,常见的软件有

阿里云服务器负载均衡SLB

Nginx+keepalived

LVS(Linu

2、基本配置

ng基本配置主要是在/usr/local/nginx/nginx-1.6.2/conf/nginx.conf

记住里面的server里面的配置

listen:表示监听的端口

server_name:可以配置具体域名

location:可以配置具体的拦截的地址,可以进行请求重定向

access_log:则是nginx访问日志配置

x Virtual Server)、haproxy等技术

3:日志切分

ng日志管理

nginx访问日志放在logs/host.access.long,并使用main格式(还可以自己定义格式

对于main格式如下定义

#    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                      '$status $body_bytes_sent "$http_referer" '

#                      '"$http_user_agent" "$http_x_forwarded_for"';

log_format格式变量

$remote_addr #记录访问网站的客户端地址

$remote_user #远程客户端用户名

$time_local #记录访问时间与时区

$request #用户的http请求起始行信息

$status #http状态码,记录请求返回的状态码,例如:200、301、404等

$body_bytes_sent #服务器发送给客户端的响应body字节数

$http_referer #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。

$http_user_agent #记录客户端访问信息,例如:浏览器、手机客户端等

$http_x_forwarded_for #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置

在我们日常生活中,对nginx日志的分析非常的重要,通常需要运维去对Nginx的日志进行切割和分析处理。比如一个定时任务,去处理nginx日志等。

举个例子

第一步:分析如何去实现日志切分,编写shell脚本,这里按照每分钟去进行切割日志最后放入/usr/local/nginx/datalogs目录下,最后重启nginx。脚本命名为log.sh,并将其放入/usr/local/nginx/sbin目录下

第二步:定时任务对脚本进行调度

然后加入,并且保存退出

最后我们cd到/usr/local/nginx/datalogs就能查看到每分钟切割的日志了

4:反向代理(proxy_pass)与负载均衡(upstream)

说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理

在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们

上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

反向代理

明白了什么是正向代理,我们继续看关于反向代理的处理方式,举例如我大天朝的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用nginx进行反向代理实现的,并且通过封装nginx和其他的组件之后起了个高大上的名字:Tengine,有兴趣的童鞋可以访问Tengine的官网查看具体的信息

nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。

http://tengine.taobao.org/

那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图

通过上述的图解大家就可以看清楚了,多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色

反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息

location语法:表示uri方式定位

location语法:表示uri方式定位

1、location=pattern {} 精确匹配

2、location pattern {} 一般匹配

3、location ~ pattern {} 正则匹配

举个例子

环境

nginx1:192.168.46.144

tomcat1:192.168.46.145

tomcat2:192.168.46.146

配置nginx:

我这里的路径是/usr/local/nginx/conf/nginx.conf

最后重启nginx

访问http://192.168.46.144/test/

会被导航到http://192.168.46.145:8080/test/ 和http://192.168.46.146:8080/test/

注意:反向代理之后,获取客户端ID地址为nginx服务器地址,这里需要nginx进行forward,设置真是的IP地址

 

5、nginx优化

nginx可以对数据进行压缩,对一些图片、html、css、js等文件进行缓存

从而实现动静分离等优化功能,在网站优化的时候非常有用

动静分离:其实就是通过不同的请求链接,将动态的请求链接于静态的请求分离开了,使静态的文件直接访问nginx目录下的问题。动态的访问tomcat,如匹配.action|.do就访问tomcat,.jsp|.html就访问nginx目录的静态文件。这样就实现了动静分离

其他的相关配置如下可以根据实际情况添加或者修改

    以上就是本篇文章【nginx日志切割、反向代理(proxy_pass)与负载均衡(upstream)】的全部内容了,欢迎阅览 ! 文章地址:http://fabua.ksxb.net/quote/930.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 海之东岸资讯移动站 http://fabua.ksxb.net/mobile/ , 查看更多