Nginx简介+日志文件切分+反向代理与负载均衡

xiaoxiao2021-02-28  45

Nginx是一款轻量级的Web服务器、反向代理服务器、电子邮件代理服务器。它的特点是占有内存少,并发能力强。在高并发测场景下,Nginx是Apache服务器不错的替代品。

Nginx安装

下载nginx-1.12.2.tar.gz并上传至192.168.0.228

下载需要依赖的库文件

yum install pcre

yum install pcre-devel

yum install zlib

yum install zlib-devel

进行configure配置

cd /usr/local/nginx-1.12.2

./configure --prefix=/usr/local/nginx

编译并安装  

make  &&  make install

查看nginx是否已启动

ps -aux|grep nginx

Nginx默认端口是80,在浏览器中访问一下

关闭nginx

/usr/local/nginx/sbin/nginx -s stop   

重启nginx

/usr/local/nginx/sbin/nginx -s reload    

Nginx配置文件

上面的浏览器访问的nginx欢迎页面,即下图中index.html

修改nginx.conf,添加server

在nginx目录下创建文件夹cb和index.html文件

index.html的内容

由于是在Windows系统中VMware虚拟机192.168.0.228中的nginx中进行的上述设置,启动nginx并在Windows系统的浏览器中无法访问http://cb.com:6666/,因为windows机器并无法识别cb.com,需要对C:\Windows\System32\drivers\etc\hosts进行修改

此时,在Windows的浏览器中访问

查看在nginx中logs目录下的访问域名cb.com产生的log信息

Nginx日志切割与分析处理

1.编写shell脚本,将日志文件拷贝到其他位置,然后重新生成一个

2.使用crontab定时对脚本进行调用

  */1 * * * *   sh   /usr/local/nginx/sbin/log.sh

在nginx的sbin目录下,新建log.sh脚本文件

#!/bin/sh BASE_DIR=/usr/local/nginx BASE_FILE_NAME=cb.com.access.log CURRENT_PATH=$BASE_DIR/logs BAK_PATH=$BASE_DIR/datalogs CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M` BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME echo $BAK_FILE $BASE_DIR/sbin/nginx -s stop mv $CURRENT_FILE $BAK_FILE $BASE_DIR/sbin/nginx

给脚本文件赋权限

chmod 777 log.sh

在nginx目录下新建datalog

mkdir datalog

编辑定时任务

crontab -e 

* * * * * sh /usr/local/nginx/sbin/log.sh

查看/usr/local/nginx/datalogs中内容

在nginx.conf中,一个server下可以有多个location,可以实现动静分离,在location后面使用正则表达式,匹配html、js、css等静态资源到指定的位置获取。如*.do *.action 则去访问tomcat服务器。

location语法

location=pattern{}  精准匹配

location  pattern{}  一般匹配

location  ~ pattern{}  正则匹配

举个使用正则表达式的例子

cd /usr/local/nginx/conf

vim nginx.conf

修改如下

在/usr/local/nginx/cb下,添加test01.html

重启nginx

在浏览器中访问cb.com:1234,由于匹配不到合适的locaton,所以最终转向了nginx欢迎页面,相当于访问192.168.0.228

访问test01.html则可以正常显示

Nginx语法

if(条件为: =  ~  ~* )、return、break、rewrite

~*  为忽略大小写的正则匹配

-f 是否为文件   -d 是否为目录     -e  是否存在

对nginx.conf修改如下

重启nginx,浏览器再次访问

修改nginx.conf

在/usr/local/nginx/cb中添加googlechrome.html

重启nginx

对请求进行分流

新建order-list.html

重启nginx

nginx可以对数据进行压缩,对图片、html、css、js等文件进行缓存、从而实现动静分离等优化功能,在网站做优化的时候非常有用

Nginx反向代理proxy与负载均衡upstream

反向代理

在192.168.0.101即Windows机器上tomcat的webapps的ROOT中添加test.jsp

<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> <html lang="en"> <head> <meta charset="UTF-8" /> </head> <body> <p>this is test.jsp</p> <p>remote ip=</p>+<%=request.getHeader("X-real-ip") %> <br/> <p>nginx server ip:</p>+<%=request.getRemoteAddr()%> </body> </html> 重启nginx

负载均衡upstream

192.168.0.231、192.168.0.232、192.168.0.233是Tomcat集群的3个节点

分别在上述3个节点的tomcat目录下的webapps/ROOT中添加test.jsp,内容分别如下

分别启动tomcat集群中的3个节点。启动192.168.0.228上的nginx。

在192.168.0.101的Windows机器上,浏览器中访问http://192.168.0.228:80/test.jsp

刷新

刷新

刷新

刷新

刷新

多次刷新分别访问231、233、232,因为在nginx.conf中设置的3个节点的权重weight相同且都为1

转载请注明原文地址: https://www.6miu.com/read-2621492.html

最新回复(0)