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
