标签:nginx

默认分类

Nginx下简单实现MediaWIKI的伪静态

最近要写一个说明文档,于是就用上了MediaWIKI。 这东西默认情况下,文章地址格式为http://domain/index.php?title=标题。 如果要改成使用http://domain/标题 的方式访问,rewrite规则明显有点繁琐,除非使用 if -e判断文件是否存在,否则正则表达式的.*会把一切东西,包括静态资源也匹配进去。 想了想,于是决定把文章的地址都变成子目录的形式:http://domain/wiki/标题,这样的话伪rewrite规则就变得简单多了,对/wiki进行匹配即可,仅需一行代码: rewrite ^/wiki/(.*) index.php?title=$1 […]

Read more 4 Comments
服务器, 未分类, 运营维护

一个高频率的HTTP服务监控Shell Script

Nginx/Apache之类的长期运行,无法保证在遇到各种突发情况进程不会死掉。如果这时候又出门在外,一时间无法操作,那网站岂不是要宕机数个小时? 明显我无法接受这事情。于是一个简简单单的监控HTTP服务的Shell Script就出来了。 #!/bin/bash #函数restart restart() { #重启Nginx service nginx restart #重启Apache service httpd restart } #循环的开始 while [ “$loop” = “” ] do #延迟五秒 sleep 5 #是否能下载,是则进入下一步循环,否则执行restart wge […]

Read more 4 Comments
服务器, 未分类, 运营维护

巧用Nginx的日志功能配合IPTABLES实现防范基础CC攻击(2013年11月24日8:24:13更新)

Log File

相信不少人都被CC过,我也不例外,因此一直以来想尽各种办法降低PHP所占的资源。 PHP所耗的资源算压下去了,带宽却满了…… 之前也看过有人使用Nginx的第三方模块limit req2实现防CC攻击,自己也弄过,但效果没想象中的好,只用了几十分钟我就抛弃了…… 昨天其中考试结束后,突然灵机一动,想到一个新的防CC方法。回家后经过多次调试,几经完善,已经基本能正常使用了。 这其中利用了Nginx的日志功能,还有自己写的一个Shell Script。本文出自微宇宙(http://zhensheng.im),转载者死一户口本。 Apache的请移步这里:Apache:只有访客IP的日志格式 首先给 […]

Read more 14 Comments
服务器, 运营维护

设置ACL增强网站目录安全性

Linux的安全性高是人人皆知的,可以分别设置user,group,other的r/w/x的权限。 但是,对于我这种注重数据安全的人来说,这样简单的权限设置已无法满足我的需求。 就以Nginx+PHP-FPM的环境为例。一般给Nginx和php-fpm fork出来的进程的用户身份不同的。 假如给Nginx的执行身份是用户nginx,而php-fpm的执行身份是php-fpm。 在网站所有文件owner都是php-fpm的情况下,给网站目录的文件的最低权限就是505(user:r_x,group:___,other:r_x)(不能再低了,再低就无法正常访问了)。本文出自微宇宙(http://z […]

Read more 4 Comments
服务器, 运营维护

多重代理时如何防止伪造X-Forwarded-For且获取真实IP

127.0.0.1

当我们给网站使用例如CDN,Nginx或Varnish等缓存服务时,为了获取访客的真实IP,大多数会地把访客的真实IP赋值给X-Forwarded-For(下文简称XFF)。 但是因为XFF是个HTTP请求头,也就是最前面带有http_,因此这类http信息就可以被伪造。     其实根据实际使用情况判断是否需要获取XFF内容就不会出现这些问题。 拿Nginx的反代理(Proxy模块)功能来说,有人会把$proxy_add_x_forwarded_for变量的内容传给后端作为用户的真实IP。 Nginx对该变量的处理非常智能,当有XFF传过来时,Nginx就会自动把Ngin […]

Read more 22 Comments
服务器, 运营维护

禁止Nginx重定向至监听端口

Prot in redirect

在使用Nginx时,可能有时不需要让Nginx监听80端口,甚至在前面再加一个Squid,Varnish之类的HTTP缓存。 但是访问子目录时,除非在子目录后面再加一条“/”,否则就会遇到网址自动重定向至Nginx监听的端口。假设你Nginx站点监听的端口是123,你本来访问的地址是http://domain.com/wp-admin,会自动重定向至http://domain.com:123/wp-admin 这样明显会对服务器造成很大的威胁,要知道后端可是很重要的,如果后端端口暴露出来,就可能会被人直接对这个端口进行诸如CC之类的攻击…… 在Nginx的核心模块的文档中,有这样一个配置: p […]

Read more 5 Comments
服务器, 未分类, 运营维护

LNMPV0.3 Stable For Ubuntu 12.*/Debian 6/Debian7/CentOS6 32Bit or 64Bit

从今天开始,LNMPV的网站正式启用,以后新版均在http://www.mke2fs.com发布   LNMPV 0.2 Stable: 昨天发布了LNMPV 0.1测试版,感谢http://imlonghao.com/这个勇敢的小白,试用了我的LNMPV0.1,告知了我很多BUG,经过昨晚的努力,终于解决了。 另外还要感谢单手摘JJ,经过他昨晚的提醒,让我恍然大悟,发现可以一站一POOL来实现PHP以特定的用户身份执行。从而解决跨站问题。 本次更新: 1 )使用sock方式链接PHP-FPM 2 )添加可选的一站点一POOL的功能 3 )修改PHP-FPM的进程上限 4 )修改PH […]

Read more 72 Comments
运营维护

使用Varnish Cache时,让Nginx获取访客真实IP

200

之前发表过一篇文章:Varnish(前)+Nginx(中)时,让Apache(后)获取用户真实IP(多重代理) 该方法能成功解决使用或者不使用CDN时,在Varnish前端,Nginx中端,Apache解析PHP文件的情况下让Apache获取访客真实IP。因为当时主要是利用Nginx进行缓存,没使用其他功能,旧没让Nginx也获取访客真实的IP。 其中Varnish处理XFF的关键代码: if (req.restarts == 0) { if (req.http.x-forwarded-for) { # set req.http.X-Forwarded-For = # req.http.X-F […]

Read more 12 Comments
服务器, 运营维护

Varnish(前)+Nginx(中)时,让Apache(后)获取用户真实IP(多重代理)

PHP探针

不得不说我有点问题,网站一个Apache+Varnish不够,还要在Apache和Varnish之间插入个第三者——Nginx。 因为某些需要,也给该服务器上的个别网站上了CDN。 Apache做后端,前面多一个Nginx Proxy Cache+Varnish,获取用户的真实IP不难,只需给Apache上一个rpaf模块就行了,然后让Varnish处理XFF的内容就好了: if (req.restarts == 0) { if (req.http.x-forwarded-for) { set req.http.X-Forwarded-For = req.http.X-Forwarded-Fo […]

Read more 3 Comments