文章归档

终于解掉 nginx 在 SSL 下 400 的错误,蠢死了

这个问题持续了得有超过一年了,症状很简单,配置了 https 访问之后,使用 IPv6 访问的时候会报 400 Bad Request 错误,强制使用 IPv4 或者强行指定 https 协议都能解决。说到这里应该很明显了对吧,首先就应该想到是不是 80 端口上也开着 ssl 来着。但这个讨厌的地方在于用 IPv4 就一切正常了,我一直没想那么多……就因为这我的博客很长时间都没办法强制 https 访问,不然 IPv6 过来的用户没法看。

前两天搞着搞着调另一个什么反向代理相关的设置的时候,顺手开了 debug 日志,然后就想顺便测一把,结果一不小心就找到了原因_(:зゝ∠)_

长话短说,问题的根本原因是普通 http 协议和加密的 https 协议配置在了一个 server{} 块内。并不是说不支持这样搞,而是这样配置过后服务器的行为会和分开配置成两个有所不同。
[……]

继续阅读~→

Apache + Varnish + nginx 获取正确的客户端IP

貌似现在只要我更新博客就说明又在没事瞎折腾了… =.=
很久以前就遇到过这个问题,或者不如说实际上就是因为无法正确获取客户端IP才让我一直用的 Apache + nginx 的构架。今天折腾一下午 + 一晚上总算是把这个问题(还算)圆满地解决掉了。

首先是参考这篇文章配置好整个服务器构架,后端使用 Apache httpd 来处理 PHP, 中间用 Varnish 做缓存,前端使用 Tengine 作为 web 服务器,所以来自客户端的请求的处理流程是:

Client -> Tengine:80 -> Varnish:8090 ->(Miss)-> httpd:81

然后问题就来了,处在最后面的 httpd 拿不到正确的客户端IP地址,总是显示为127.0.0.1. 这个问题有趣在于,一直以来我都是使用了 mod_rpaf 来获取 X-Forwarded-For 中的客户端IP的,而如果我去掉中间那一层 Varnish 直接让 Tengine/nginx 反向代理给 httpd 的话,IP地址是能够正确获取的,更进一步实验表明,在只有一次代理的情况下一切都是正常的,当代理变成了两层,无论两层代理的顺序如何,都会出现这个问题。

中间各种股沟各种查文档就[此处省略6小时]了…

基本上有两个比较主要的原因。
[……]

继续阅读~→

写了个简单的 shadowsocks 退出自动重启脚本

screen在 VPS 上跑 shadowsocks, 不过时不时会退出然后需要我上去重启,很麻烦,于是就搞了个定时检测 shadowsocks 是否在运行,如果没有就自动重启的脚本。

然后在cron任务里面写上一句 */1 * * * * root bash /some/path/autostart.sh 就可以每分钟自动执行了,而且这样还能变相实现开机自动启动,所以就算服务器意外重启也不怕了。

如果觉得异常退出过后一分钟启动的间隔太长,当然也可以写成死循环:

就可以每5秒检查一次了,但这样[……]

继续阅读~→

解决一个 embrr 不能翻页的 PHP 配置问题

唔…大致说来就是最近在折腾着把停止更新的 embr 给升级到 Twitter REST API v1.1, 然后今天参考黄飘飘的改动把 fav 相关的两个地方弄上了自动翻页。

因为 api 更新的关系,不能用原来的页码作为参数,只能用推文的 id 来做界定了,不过操作起来倒是比想象的还要简单就是了。修改好过后传到 appfog 上木有任何问题,但放到我自己的服务器上面过后发现翻页不能了…
开始还以为是 nginx 配置不对,但看了半天找不到问题,于是考虑是不是 PHP 的问题…

简单找了一下,发现问题在于生成的翻页链接上,因为推文 id 被作为参数传到链接里面,而生成的链接变成了类似于 /favor.php?max_id=2.9972877531744E+13 这样的形式…科学计数法耶…
[……]

继续阅读~→

新装系统 Win8 与声卡那点纠结的记录

好吧我换系统了,因为换了个新硬盘神马的。然后就想着干脆装 Win8 吧。

装系统一切都好,什么都很正常很顺利那样,结果完了我想看番的时候发现…耳机没声音……
囧死了好吧。

长话短说,试过了网上提到的多种方法,有些是用了无解,有些是不适用我的情况。

我的声卡是 Reltek ALC 269 机子是华硕 N53Jf.

折腾一整天,重装三次系统之后,问题确定:Reltek 官方驱动与 Win8 不兼容。
是滴你没看错,最新版写着支持 Windows 8 的那个也不行,只有外放有声音耳机不行。

解决方案是装好系统过后静置,等系统自己联网下载微软的驱动。

真疼。[……]

继续阅读~→

慎用 Afraid.org 提供的免费 DNS 服务

首先要明确的是 freedns.afraid.org 是一个非常优秀和好用的免费 DNS 服务商,我自己用了超过两年,现在也还有几个不怎么好的域名在上面。
这家的优点是:界面简单明了、解析记录种类较全、新记录生效极快以及服务稳定。

那我为啥要说慎用呢?因为昨天我终于搞清楚了一个以前一直没在意的功能的含义…

对于所有注册用户,可以免费添加若干域名到 afraid 的解析系统当中,设置解析记录等等。但是,免费用户会被强行开启一个功能叫做 shared:public. 付费用户才可以设置为 shared:private.
因为并不影响使用,我一直都没有在意这个功能到底是啥,直到昨天才发现,将共享设置为公开意味着整个系统中的全部注册用户都可以使用这个域名

没图我说个丁丁?
freedns
那个 litgh 是我,别的么…你认识吗?
[……]

继续阅读~→

使用 Trac + git + cherokee 搭建私有版本库

基本还是弄着玩的…前提显然是有一台vps嗯嗯…

Trac 是一个专为软件开发设计的集问题追踪和 wiki 系统于一体的网页软件,git 是一个灵活而强大的版本控制工具,而 cherokee 则是一款简单好用的 web 服务器,当然,三者都是开源的。另外,这里选用 cherokee 而不是 nginx 或者 apache 这一类更为主流的服务器是因为 cherokee 的网站和默认页面比较好看所以想干脆来装逼一下这种事情我是不可能在教程里面说的。
为了搞好这个我折腾了一天,翻看了好多文档和教程,试了多种方法,最后是用的文档上没有提到的一种组合。之所以这样是因为按照文档进行设置一直不成功…

我所用的系统是 Ub[……]

继续阅读~→

在两台 VPS 之间实现自动异地备份

就是记录一下设置 Wiki 的自动备份,在 Wiki 所在的 VPS 上定时对资料目录打包,然后从备份用 VPS 把打包好的文件传输过去。

之前遭遇过多次 VPS 挂掉而数据灭失的惨剧,最近一次就是幸苦写了十多个页面之后的个人 Wiki… 然后到现在都还木有把那些内容全部给补回来…虽然说现在使用了几乎不用考虑升级(也就大大减少了手贱的几率)的 Slackware 系统,但是以防万一还是做个异地备份的好。

异地备份重于泰山

为了方便设置备份时间和文件传输的安全性考虑,我把所有参与备份的服务器设置为了同一时区,并且使用 scp 命令来通过 SSH 完成文件传输。至于备份的脚本,设置为使用 cron 任务定期执行。

我的个人 Wiki 放在一台跑着 Slackware 13.37 的低配 VPS 上面,用的是 MoinMoin Wiki 系统,所有数据都保存在文件系统中而不需要数据库,所以只要给 Moin 文件夹打包就可以备份全部内容了。
[……]

继续阅读~→

在 CentOS 5 下默认使用 Python 2.6

出于某些原因,某台低配VPS上面只能使用 CentOS 5.8 系统,但是 el5 系列的 python 版本只更新到了 2.4.3 而需要运行的应用建议使用 2.6.x 系列,所以设法更新python版本。
找了好几处不同的网站,最后综合起来达到了想要的效果:非编译安装 python 2.6 并通过 yum 管理,同时系统全局默认使用 2.6 版本替代 2.4.3

对于刚安装好的vps来说,当然要更新系统至最新。然后我们来更新python.
python是一个系统级的依赖包,没有办法卸掉(要不然很多东西都不能用了),于是只能用第三方提供的二进制包了,这里我用的是 Fedora 维护的 EPEL 源,同时还需添加 RPMForge 源以满足依赖关系。
[……]

继续阅读~→

SkyChart / Cartes du Ciel 简单介绍 – 安装、使用和自制星表

因为感觉国内业余天爱圈子里面用的比较多的都是 Stellarium, SkyMap, Starry Night 这些软件来模拟星空,但 SkyMap 和 Starry Night 是商业软件,Stellarium 又只适合屏幕/投影使用,好像大家都不太熟悉另外有一款开源的星图软件 SkyChart / Cartes du Ciel(以下简称 Ciel)。我在2009年最初接触的天文软件就是这一款,当时曾经折腾各种设置和自定义项很长时间,不过由于开发停滞,一直是2.76版本,然后后来发现了 Stellarium 就一直用到了现在。最近我发现Ciel又恢复了活跃开发并且已经更新到了3.6版(当然比Stellarium的开发速度还是慢不少,而且中文翻译进度基本为零),操作上和2.76时代并没有太大的改变,所以又重新开始使用,并且心血来潮想写一个简单的说明,让大家知道还有这样一款天文软件。

SkyChart / Cartes du Ciel 是一款开源的星图软件,提供 Win/Linux/OSX 平台下的二进制包和可供用户自行编译的源代码。它可以方便地模拟出地球上任意时刻任意地点的星空,并且能够直接输出图像,如果使用虚拟打印机还可以让它输出数字格式的星图文件。同时,它还可以调节多种参数和显示方式、可在程序中以标签形式打开多个不同星图、可以在线更新彗星和小行星数据、可以自行添加天体、可以控制望远镜…


[……]

继续阅读~→