nginx经常被用来处理静态资源如css、js、图片、html等,也被用作反向代理服务器、邮件服务器,也时常拿来做负载均衡。它的优势主要体现在对静态资源的处理上,这次抽出了点时间整理了一些这方面的知识和大家分享
1 nginx的下载地址
http://nginx.org/en/download.html
建议使用稳定版而不是最新版本
2 nginx的基本命令
这些命令主要用于启动、停止、重启nginx,如下所示:
启动:直接进入nginx的解压目录输入nginx,回车即可
其他:nginx -s 相应参数
-s后面的可选参数为stop、quit、reload、reopen
下面来看看关闭nginx服务的命令
3 通过nginx访问静态资源
前面说过nginx在处理静态资源上有优势,如果有这么一种情况,需要输入http://localhost:9080/images/pubu.jpg就把图片显示出来,对于这种情况可以进行如下配置
在server节点下增加:
location /images/ { root /data; }
这个配置的意思是如果访问路径和该规则匹配,那么返回/data/images下面的资源,来看下效果
现在浏览器里输入http://localhost:9080/images/pubu.jpg,然后回车
除了这种方式外nginx也提供了正则匹配的方式来请求静态资源,可以像下面这样配置:
location ~ \.(gif|jpg|png)$ { root /data/images; }
这个配置的意思是如果访问的url请求的资源是gif、jpg、png那么返回/data/ images下面的图片文件
要注意的是这个/指的是nginx的父目录,如果父目录下没有data/images这样的路径,访问的时候会出现404
4 反向代理
反向代理使用的几率还是很大的,反向代理可以简单理解成请求的转发,来看如下配置
location / { proxy_pass http://localhost:8080; }
这个配置的意思是当直接访问nginx的根目录时,请求会转发到8080这个端口上,这种就是反向代理了,使用反向代理可以让nginx和其他中间件搭配使用,这样的话如果请求的是静态资源那么就交给nginx处理,动态的东西则交由中间件如tomcat来处理
5 反向代理和资源静态化的综合运用
当项目很大的时候静态资源的载入会比较耗时,这种情况就可以把这些静态资源交给nginx来处理,如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script type="text/javascript" src="../jquery-1.8.3.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#img").html("<img src=\"../images/pubu.jpg\"/>"); }); </script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试</title> </head> <body> <div id="img" ></div> </body> </html>
这个页面要做的事情很简单,首先从nginx取出jquery的js,当页面载入的时候从nginx取出图片显示在页面上,这个需求的配置如下:
location / { proxy_pass http://localhost; } location /images/ { root /data; } location ~ \.js$ { root /data/js; }
这样子tomcat(我的是80端口)就可以和nginx搭配使用了,效果如下:
最后把data这个目录的截图贴出来,随便看看
至于nginx的负载均衡本人不建议使用,目前nginx的负载均衡不支持session复制,如果对session这一块要求不很严格的情况下才建议使用。负载均衡用apache会更好因为它支持session复制
nginx的说明:http://nginx.org/en/docs/beginners_guide.html