文章归档

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秒检查一次了,但这样[……]

继续阅读~→

从 MySQL 迁移到 MariaDB

“Because Oracle is Oracle is Oracle()”[?]

ArchLinux 昨天宣布将使用 MariaDB 作为 MySQL 的默认提供包,openSUSE 已经在新近发布的12.3版中默认使用 MariaDB, 连 Fedora 也正在考虑更换为 MariaDB.

于是我决定把我的所有服务器从 MySQL 迁移到 MariaDB.

对 Arch 用户来说很简单,照着官方新闻里面的来就是了:

而对于 openSUSE 就更傻瓜式了,毕竟是默认的嘛: zypper in mariadb 一句就够。

至于 Debian/Ubuntu 用户就要稍微复杂一些,不过整个过程还是很流畅的:
[……]

继续阅读~→

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

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

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

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

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

继续阅读~→

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


[……]

继续阅读~→

[转][傲娇]为什么数组下标要从0开始?

[傲娇]为什么数组下标要从0开始?
http://www.cse.msu.edu/~wangyua6/?p=764 ←此地址在墙外

相信大部分童鞋,都知道C里数组下标是从0开始的。为毛不从1开始呢?这里,从一个角度来分析,就是多维数组的问题。其实,这世上本没有多维数组,要的人多了,也就有了。本质上,多维数组可以映射到一个一维的数组。好,我们现在开始玩吧。假设这个二维数组是mn的,比如说A[m][n]。 接下来,我们有个一维数组,它是mn的,比如说B[mn]。对于大多数地球人来说,显然,我们可以通过一个一一映射,把A的每一个元素对应到B上。现在我们来看看,数组从0开始和从1开始的区别。
[……]

继续阅读~→

另一份Twip4搭建Twitter API教程

网上其实已经有很多这样的教程了,不过还是不停地有人遇到各种各样的问题然后问我怎么搭。其实按我的经验,只要空间支持(下面会介绍一个我自己用的简单的测试方法)、设置正确(大部分问题应该都是出在这里),搭建过程不会有一点问题,顺利的话十分钟都可以搞定。
废话就说到这里,下面进入正题。

这篇文章会结合我自己搭建许多api的成败经验讲解:

  • 如何确定一个空间是否支持twip
  • 如何申请和设置twitter app
  • 如何设置twip
  • 特别常见问题的处理

这篇文章不会教你:

  • 如何找到免费空间
  • 如何注册免费空间
  • 如何设置空间和域名
  • 如何使用FTP上传文件
  • 如何获取和部署SSL证书

[……]

继续阅读~→

滚来滚去……~(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。
Merry