ssl_preread是基于L4的反代方案,TLS SNI握手时客户端会提供域名,所以可以让Nginx在无需完成TLS握手的情况下,就根据域名进行后端服务器的选择。简单来讲,你只需要给后端服务器配置一个SSL证书,而提供反代功能的Nginx则无需配置。文档见此:http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html 因为这是L4反代,所以通过“proxy_set_header”传递客户端IP的方法是行不通的。其实传递客户端IP的解决办法跟上一篇文章类似:L4(传输层)IP透明反向代理的实现(传递客户端真实IP),ng […]
Tag: nginx
Nginx下简单实现MediaWIKI的伪静态
最近要写一个说明文档,于是就用上了MediaWIKI。 这东西默认情况下,文章地址格式为http://domain/index.php?title=标题。 如果要改成使用http://domain/标题 的方式访问,rewrite规则明显有点繁琐,除非使用 if -e判断文件是否存在,否则正则表达式的.*会把一切东西,包括静态资源也匹配进去。 想了想,于是决定把文章的地址都变成子目录的形式:http://domain/wiki/标题,这样的话伪rewrite规则就变得简单多了,对/wiki进行匹配即可,仅需一行代码:
1 |
rewrite ^/wiki/(.*) index.php?title=$1 last; |
然后修改M […]
一个高频率的HTTP服务监控Shell Script
Nginx/Apache之类的长期运行,无法保证在遇到各种突发情况进程不会死掉。如果这时候又出门在外,一时间无法操作,那网站岂不是要宕机数个小时? 明显我无法接受这事情。于是一个简简单单的监控HTTP服务的Shell Script就出来了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash #函数restart restart() { #重启Nginx service nginx restart #重启Apache service httpd restart } #循环的开始 while [ "$loop" = "" ] do #延迟五秒 sleep 5 #是否能下载,是则进入下一步循环,否则执行restart wget -O /dev/null http://你的网站地址 -t 1 || restart done |
真的简简单单。 可见我并没有采用cron功能,毕竟这东西正常情况最低频率只能一分钟了。 restart那个function是http服务不正常后执行的,可以自行增添,删减,替换。sleep后面跟着的是秒数,在这里简单理解成监控频率吧。wget处,-t参数指的是尝试次数,这里我写了一次。 执行 […]
巧用Nginx的日志功能配合IPTABLES实现防范基础CC攻击(2013年11月24日8:24:13更新)
相信不少人都被CC过,我也不例外,因此一直以来想尽各种办法降低PHP所占的资源。 PHP所耗的资源算压下去了,带宽却满了…… 之前也看过有人使用Nginx的第三方模块limit req2实现防CC攻击,自己也弄过,但效果没想象中的好,只用了几十分钟我就抛弃了…… 昨天其中考试结束后,突然灵机一动,想到一个新的防CC方法。回家后经过多次调试,几经完善,已经基本能正常使用了。 这其中利用了Nginx的日志功能,还有自己写的一个Shell Script。本文出自微宇宙(http://zhensheng.im),转载者死一户口本。 Apache的请移步这里:Apache:只有访客IP的日志格式 首先给 […]
设置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 […]