有这么一个情况, 有个运行Asp的应用,比较土,还是用本地 *.mdb 的数据库。这么一来,就不可能通过 Apache ::: asp 这样的插件令其运行在Linux的环境中。而且是相当烂的一个 asp 程序,连html模板都没单独目录存放,直接跟 *.asp 混在一块。 幸好这个世界有 Nginx, 是对待这种破东西最好的优化。
如果直接靠 IIS 既处理 asp 又处理静态文件的话,流量一大性能是不堪想象了。 2台服务器,运行架构计划为最简单的 Nginx --> IIS 就通过 Nginx Proxy 到IIS 的80端口上。
但测试的时候发现,虽然速度瞬间得到体现,但每次请求,Nginx 都会往IIS上拉文件,特别是静态文件。 原本试用在 Linux 下 mount 一个 smb 的盘,然后让Nginx直接往里头通过 smb 请求 IIS 应用服务器上的静态文件。从而绕开 IIS 避免压力。但出了怪问题....况且跟本文无关,就暂略不说了。 最后用上了 Nginx proxy_store ,Nginx 直接把静态文件在本地硬盘创建并读取, 效果相当好,而且某程度上对待这么烂的应用要装个Squid 确实有点大题小作。 但 Proxy_store 跟 Squid 是有区别的!! 最明显的一点在于其不具有expires,无法通过程序控制cache什么时间过期。往后要写个脚本定期删除缓存目录中的内容,不过这也正合我意。 以下是配置方式:
如果需要将文件缓存到本地,则需要增加如下几个子参数:
if ( !-e $request_filename) { 即改成有条件地去执行proxy_pass,这个条件就是当请求的文件在本地的proxy_temp_path指定的目录下不存在时,再向后端拉取。 整体配置例子:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ { #指定缓存文件类型 (责任编辑:IT) |