动静分离
Nginx实现动静分离,其实就是在反向代理的时候,如果是静态资源,那么就直接从Nginx发布的路径去读取,而不需要从后台服务器获取了。
但是要注意:这种情况下需要保证后端跟前端的程序保持一致,可以使用Rsync做服务端自动同步或者使用NFS、MFS分布式共享存储。
JSP获取图片:
<td><img alt="" src="${pageContext.request.contextPath}/static/images/logo.jpg"/></td>
nginx.conf
server {
...
index index.html index.htm index.jsp; root /usr/common/apache-tomcat-7.0.78_1/webapps/ROOT/; location ~* ^/arch1/.*.(jpg|jpeg|gif|png|swf|ico)$ { root /usr/common/apache-tomcat-7.0.78_1/webapps; } location ~* ^/arch1/.*.(html|htm|js|css)$ { root /usr/common/apache-tomcat-7.0.78_1/webapps; } location ~* .*.(jpg|jpeg|gif|png|swf|ico)$ { if (-f $request_filename) { #expires 15d; break; } }
...
}
部署的tomcat文件位置
负载均衡
Nginx通过upstream模块来实现简单的负载均衡
在upstream块内,定义一个服务器列表,默认的方式是轮询,如果要确定同一个访问者发出的请求总是由同一个后端服务器来处理,可以设置ip_hash
请注意:这个方法本质还是轮询,而且由于客户端的ip可能是不断变化的,比如动态ip,代理,翻墙等等,因此ip_hash并不能完全保证同一个客户端总是由同一个服务器来处理
upstream cctest1.com {
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:9080 weight=5;
}
server {
...
location / { proxy_pass http://cctest1.com; }
...
}