Cloudflare universal SSL

Cloudflare 最近宣布的 universal SSL 对免费用户也开放,这真的是个不错的功能,即便很多人不相信 Cloudflare,认为这是史上最大的中间人攻击,但是既然都用了 CDN,你还能去想那么多么?我认为这个功能对于个人或其它非关键站点来说还是很实用的,个人而言,主要是看中了一点——使用 CDN 还可以隐藏自己的服务器地址,避免一些信息的泄露。

但是不得不说下,Cloudflare 那头颁发证书的速度实在是太慢了,虽然原因很明显——有很多站点要逐个颁发,但。。。还是未免也太慢了点,只能先暂停掉了。

少用 if … rewrite,多用 try_files

前段时间配置 Nginx 时候碰到了一个问题:Nginx 模块内部暴露出来的资源无法访问。具体来说就是比如某个模块导出了一个资源(比如 /channels-stats)提供统计信息,如下:

location /channels-stats {
# activate channels statistics mode for this location
push_stream_channels_statistics;

# query string based channel id
push_stream_channels_path $arg_id;
}

而在配置文件中还有一下配置,如果访问的文件不存在,则重定向到使用 index.php 去进行访问

if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/?s=$1 last;
break;
}

这个时候,/channels-stats 是无法被访问到的,原因应该是 /channels-stats 这样的有模块导出的资源并不属于 $request_filename 这个变量的范畴。导致实际访问的其实是 /index.php/?s=channels-stats 。

这个时候也不能用 $request_uri, $uri 等变量去替换 $request_filename 的位置,因为 if 能测试的就只是文件是否存在而已。

想了想,发现这段时间都忘了 Nginx 的 try_files 指令了,以及 if is evil 这条 Nginx 金句了,用下面这条可以替代上面的,并且可以保证  /channels-stats 仍然可以访问

try_files $uri $uri/ /index.php?s=$request_uri;

这里讲了不该用 if 的:
http://wiki.nginx.org/Pitfalls#Check_IF_File_Exists
http://wiki.nginx.org/IfIsEvil
更新:这里的问题其实是把”if (!-e $request_filename)”测试放到 location / 下面就很好解决了的,不知道当时为什么脑子短路了,没有发现。。。

Ext4 文件系统所支持最大分区

前段时间需要上个存储服务器,弄了个 20TiB 的分区使用。考虑到 Linux 上面的 ext4 文件系统已经比较成熟了(大多数发行版的默认文件系统),并且初略查看了一些资料发现能支持的分区最大值也远大于 20TiB ,所以装好系统后就执行了

mkfs.ext4 /dev/sdb1

结果却报错了:

mkfs.ext4: Size of device /dev/sdb1 too big to be expressed in 32 bit susing a blocksize of 4096.

google 了一圈才发现,虽然 ext4 文件系统是支持大于 16TiB 的分区,但是用来创建 ext4 文件系统的工具————e2fsprogs 的较低版本却不支持。需要 1.42 版本以上才支持。

"This release of e2fsprogs has support for file systems > 16TB. "
http://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.42

不想升级 e2fsprogs 了,于是转而按照 Red Hat 推荐用了 XFS。

mkfs.xfs /dev/sdb1

不负责任的豆瓣安全提醒

因为最近的 heartbleed 漏洞,邮箱里面收到了不少网站发过来的提示修改密码的邮件。而如以往,国内网站很少发。但是今天豆瓣网发了一封提示邮件

但是这个邮件未免发得太不负责。第一,OpenSSL 本身不是网络安全标准协议;第二,“你在其他时间的登录行为不会受到影响”,真的吗?豆瓣你真的这么确定?如果有人很久以前就已经发现和利用 heartbleed 漏洞,你也敢打包票漏洞在大规模曝光之前的登录是完全不受影响,未免也太轻浮。安全问题这东西,还是宁可信其有吧

The pain of using random generated complex passwords

Nowadays all major internet browsers come with password auto-sync feature, some even had random complex password generator included. that is great! You finally can feel “secured” about your password, until it actually comes with a pain in the ass.

When you use the same password to login some website’s mobile app, if the password just happened to be a random complex password, it’s diffcult to input it. On all the touch screen keyboard, when you have to input a string like “KU=u3B:Kt_mo”, you get mad. So it is easily you miss typed a charactor or you type something wrong. Oops! can’t let you login.

It gets worse, some website decide to have aggressive protection against brutal force login try to login users’ account, so when you typed wrong password multiple times, you got banned or worst: force you to reset password!

Thank you instagram for force me to reset my password

12306 网站究竟是有多傻逼?(2)

有必要继续说下12306网站的傻逼性:

  • 傻逼式的排队系统,浪费人的时间,从来没听说过有人排队排到过的,所以后来我也是一看到这傻逼玩意,马上退出了。我不知道网站设计者是怎么想的,是想用这个办法让一部分人卡住,降低刷票率么?我只能说这是个傻逼设计的
  • 好了,我退出排队了,但一回到订票的那个页面,我CNM!之前的那些“时间、车次、站点”等过滤选项都被清除。于是我又要手工重新选定。这个问题在你以为那个“有票”就真的代表有票的时候,被骗了进来,点击提交,就直接告诉你余票为0,你不得不返回的时候也存在。再次问候12306的人:CNM!
  • 不准用户使用的浏览器自动记住密码,而自动把用户不知不觉登出的时候(或者之前)也没有提醒。于是在被这傻逼网站自动把你登出后,你点击预定的时候才发现,又必须要重新输入账号名、密码、验证码。再次登陆进来后,一张票都没有了。

其余的比如像那个自动对验证码进行校验的功能写得傻逼,足以导致浏览器卡死等傻逼性就不一一多说了。总而言之,12306就是一个人类使用起来极其困难的网站(不管有意还是说设计者本来就这么傻逼)。而人类使用起来极其困难的结果是什么呢?那就是那些自动化工具对它的使用效率远远高于人类,因为程序不会受到它这些傻逼特性的影响。所以从12306说他为屏蔽机器刷票做了努力,都是屁话!

最近还有个傻逼知乎帖子在说12306有多牛逼,我觉得还是算了吧,就这个集齐万千傻逼于一身的网站你能让我相信它还能算作牛逼的地方?这破网站的缓存问题还有得是改进的余地。

12306 网站究竟是有多傻逼?

在标题里面就说粗话实在不是个好行为,但是12306这个傻逼网站确实让我火大。

不是人尽皆知的实际买票的问题,而是我从来就没有弄明白过设计网站的那些傻逼怎么会觉得自己弄个证书会比花点小钱去买个证书,这样所有人都不用去手动安装证书,而且浏览器也不会屏蔽你要好?还有个问题就是这个傻逼网站的密码策略,我要送给做这个网站的人“操你妈逼”这四个字,一个像“=UE(Ksr+%GK5”这样的随机密码,你跟我提示“密码强度太弱,必须包含字母,数字,下划线中的两种或两种以上!

究竟是要怎样的傻逼才可以设计出这样的网站?!

SB