全球主机交流论坛

标题: 适用于Directadmin面板的Nginx自动安装脚本 [打印本页]

作者: mudfrog    时间: 2010-9-25 14:58
标题: 适用于Directadmin面板的Nginx自动安装脚本
作者:iCodex
来源:iCodex's Blog
地址:http://icodex.org/2010/05/directadmin-nginx-automated-installer/

论坛的debian童鞋拿了人家的代码,改了下注释发上来,只发了install.sh,没有卸载的脚本。
这里有完整的。

个人比较偏爱apache,但apache也有不足的地方.比如处理静态请求上.apache会很费劲.nginx也是比较喜欢的一个轻型http服务器.但nginx用fast-cgi跑php也有不足.所以我做了组合,前端跑nginx,后端跑apache.运行了一段时间之后.发现真的不错.所以就一直推荐周遭的朋友这样用.这些日子折腾了好久.终于完成了在Directadmin面板基础上安装nginx的自动安装脚本.这次更新的与前段时间发布的教程不同.这次将nginx真正放到了前端.静态资源完全由nginx处理.后端的apache处理的请求仅限于动态.真正做到动静分离.这样就可以负载更多的访问了.

另外给每个虚拟主机设置了缓存及更完善的防盗链支持.

安装我写了一个脚本.下载后执行就可以了(仅限于centos系统).但是有一个前提:必须在全新安装directadmin面板的机器上安装,这是个已知问题.

安装方法:

wget http://icodex.org/dl/directadmin/install.sh
chmod 755 install.sh
./install.sh

卸载方法:

wget http://icodex.org/dl/directadmin/uninstall.sh
chmod 755 uninstall.sh
./uninstall.sh

如果有任何建议或疑问,请发邮件给我([email protected]) 谢谢!

[ 本帖最后由 mudfrog 于 2010-9-25 15:00 编辑 ]
作者: serverpoint    时间: 2010-9-25 15:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: befree    时间: 2010-9-25 15:00
好好学习一下了,不过穷人用不起DA
作者: ATOM    时间: 2010-9-25 15:04
学习了。
作者: mudfrog    时间: 2010-9-25 15:06
不想制造矛盾,但是实在觉得 拿了人家的脚本 改了注释不加说明的发布出来 是不妥的。
尤其还没发完整 尤其是只支持centos的,万一人家拿了在别的系统上装呢。。。
作者: monface    时间: 2010-9-25 15:10
一直有个疑问  绑定域名什么的是da操作还是nginx?
作者: zjsz007    时间: 2010-9-25 15:17
支持楼主下
作者: debian    时间: 2010-9-25 15:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: renothing    时间: 2010-9-25 15:54
proxypass http://$host:xx
就行了。具体的,是后端Apache负责域名

[ 本帖最后由 renothing 于 2010-9-25 16:03 编辑 ]
作者: debian    时间: 2010-9-25 15:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: renothing    时间: 2010-9-25 16:02
网上流传的脚步是有毛病的,把所有都转发到后端去了。没有起到我们使用nginx的作用。

最后奉劝大家一句.DA的默认方式,安全是很大的问题。对于开了shell权限的来说,open_basedir就是个摆设了。

详情看这里
http://blog.37hi.com/archives/235/

[ 本帖最后由 renothing 于 2010-9-25 16:06 编辑 ]
作者: 诡谲    时间: 2010-9-25 16:25
原帖由 renothing 于 2010-9-25 16:02 发表
网上流传的脚步是有毛病的,把所有都转发到后端去了。没有起到我们使用nginx的作用。

最后奉劝大家一句.DA的默认方式,安全是很大的问题。对于开了shell权限的来说,open_basedir就是个摆设了。

详情看这里
http://blog. ...


不错.但在虚拟主机DA面板当中,要顾虑的东西会比较多.
例如成员设置错误页面,当访问一个不存在的页面的时候,nginx无法定位到具体路径就会返回错误,如果这个时候返回到后端的apache进一步匹配错误页面的设置就可以避免这种情况的发生,减轻了实施错误页面设置的复杂度.
我的脚本中一样会把页面返回到后端进行查询,但对于一个存在的文件来说,就只有优先级别的不同了(优先由nginx解析).
nginx在整个系统中无法做到像单用户那样灵活.可以一试.呵呵

防盗链这块,其实我是添加了两条参数,proxy_set_header   Referer $http_referer;proxy_set_header   Cookie $http_cookie; 具体看proxy.inc:
  1. proxy.inc
  2. proxy_connect_timeout 30s;
  3. proxy_send_timeout   90;
  4. proxy_read_timeout   90;
  5. proxy_buffer_size    64k;
  6. proxy_buffers     16 32k;
  7. proxy_busy_buffers_size 64k;
  8. #proxy_pass http://127.0.0.1:81;
  9. proxy_pass_header Set-Cookie;
  10. proxy_redirect     off;
  11. proxy_hide_header  Vary;
  12. proxy_set_header   Accept-Encoding '';
  13. proxy_ignore_headers Cache-Control Expires;
  14. proxy_set_header   Referer $http_referer;
  15. proxy_set_header   Host   $host;
  16. proxy_set_header   Cookie $http_cookie;
  17. proxy_set_header   X-Real-IP  $remote_addr;
  18. proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
复制代码

作者: renothing    时间: 2010-9-25 17:18
标题: 回复 12# 的帖子
你完全可以用if ( !-e $request_filename) 来结合着用。如果全部转向后端,则没有了任何实质性意义:说缓存吧,也没看到用proxy_cache,说处理静态文件吧,又全部转到Apache了。
防盗链这块,其实我是添加了两条参数,proxy_set_header   Referer $http_referer;proxy_set_header   Cookie $http_cookie;

这些是可以伪造的。正确的做法是ngx_http_accesskey_module 或者转向后端脚本判断。

[ 本帖最后由 renothing 于 2010-9-25 17:20 编辑 ]
作者: 诡谲    时间: 2010-9-25 17:31
原帖由 renothing 于 2010-9-25 17:18 发表
你完全可以用if ( !-e $request_filename) 来结合着用。如果全部转向后端,则没有了任何实质性意义:说缓存吧,也没看到用proxy_cache,说处理静态文件吧,又全部转到Apache了。

这些是可以伪造的。正确的做法是ngx_http_acce ...

的确是可以用判断的方式来做到,但这里之所以会留下来,是因为if (!-e $request_filename)语句也有它局限的地方,例如当用户提交带参数的URL地址链的时候(如http://youdomain.com/about.html?comments),就需要使用try_files进行转发.但try_files这个无法写进if (!-e $request_filename)语句当中.所以不使用if语句是有原因的.
proxy_cache后来我删除了.因为大部分程序使用,用户反映都有问题,例如一些文章系统,更新了文章之后并没有发送PURGE刷新缓存的信号到nginx.那这样就会给用户访问带来很大麻烦.

proxy_cache如果要使用,我建议参考这篇文章介绍的实现方法及刷新缓存的方法.http://sudone.com/nginx/nginx_cache_purge.html


[ 本帖最后由 诡谲 于 2010-9-25 18:03 编辑 ]
作者: 诡谲    时间: 2010-9-25 17:33
至于防盗链伪造,这个你怎么避免?多用户体系中,遵循apache的防盗链会更好.
而且那个防盗链模块实施起来,也不是多用户系统能承担的.还不说是否会带来系统稳定性方面的问题.
作者: renothing    时间: 2010-9-25 17:48
标题: 回复 15# 的帖子
现在的问题是。。。。啥都没用到,那装个nginx有鸟用。。。Apache本身不是更好吗?
作者: 诡谲    时间: 2010-9-25 17:52
原帖由 renothing 于 2010-9-25 17:48 发表
现在的问题是。。。。啥都没用到,那装个nginx有鸟用。。。Apache本身不是更好吗?


呵呵.有没有用,亲自测试过就知道了.不要过早下定论.
作者: shangpan    时间: 2010-9-25 17:52
没DA面版了,不想再折腾VPS了。
作者: renothing    时间: 2010-9-25 17:58
标题: 回复 17# 的帖子
呵呵~理论上就已经成了个摆设了。
至于expired 和gzip,Apache下也有相应模块。deflate和expired
不要迷信别人,你自己测试后就知道了。

我现在配置是Apache最小化安装,只处理php~其余工作交给nginx。速度要快一些。
作者: 诡谲    时间: 2010-9-25 18:07
原帖由 renothing 于 2010-9-25 17:58 发表
呵呵~理论上就已经成了个摆设了。
至于expired 和gzip,Apache下也有相应模块。deflate和expired
不要迷信别人,你自己测试后就知道了。

我现在配置是Apache最小化安装,只处理php~其余工作交给nginx。速度要快一些。 ...


我刚才再次检查一下,后端apache确实重复处理了请求.cache-control和expires在nginx端都是忽略的.你说的确实在理.您的QQ是多少?我想加您为好友,交个朋友.
作者: 杯具    时间: 2010-9-26 04:37
原帖由 诡谲 于 2010-9-25 16:25 发表


不错.但在虚拟主机DA面板当中,要顾虑的东西会比较多.
例如成员设置错误页面,当访问一个不存在的页面的时候,nginx无法定位到具体路径就会返回错误,如果这个时候返回到后端的apache进一步匹配错误页面的设置就可以避 ...

装好directadmin请不要直接开ssh给客户用。因为da是通过open_base dir来限制目录的。不开ssh给客户没有任何问题。

要开ssh,需要自己重新配置权限的,否则有跨目录的问题。
作者: winder    时间: 2010-9-26 05:21
我帮顶...来学习
作者: chijian    时间: 2010-9-26 06:21
我不发表评论




欢迎光临 全球主机交流论坛 (https://loc.wget.at/) Powered by Discuz! X3.4