nginx常常被用来处理静态资源如css、js、图片、html等,也被用作反向代理server、邮件server,也时常拿来做负载均衡。它的优势主要体如今对静态资源的处理上,这次抽出了点时间整理了一些这方面的知识和大家分享
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这个port上,这种就是反向代理了,使用反向代理能够让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>
这个页面要做的事情非常easy,首先从nginx取出jquery的js,当页面加载的时候从nginx取出图片显示在页面上,这个需求的配置例如以下:
location / { proxy_pass http://localhost; } location /images/ { root /data; } location ~ .js$ { root /data/js; }
这样子tomcat(我的是80port)就能够和nginx搭配使用了,效果例如以下:
最后把data这个文件夹的截图贴出来,随便看看
至于nginx的负载均衡本人不建议使用,眼下nginx的负载均衡不支持session复制,假设对session这一块要求不非常严格的情况下才建议使用。负载均衡用apache会更好由于它支持session复制