升级UBUNTU之后,在家里测试一切正常,以为万事大吉,但到了单位一测试才发现不是那么回事。 为了测试,我的“服务器”装了两个web server,nginx监视81端口,主要是对外,lighttpd监视80端口,主要是测试程序。在家里用的是80端口,所以以为一切正常,但到了单位发现使用ak做的系统一切正常,而使用CI做的系统出现了奇怪的问题,主页没有问题,但是访问主页页面上的链接的时候,http自动转换为https,从而造成ssl错误无法访问。
回到家里,检查一番,没有大问题啊。升级之前一切正常,而升级后出现这个问题,应该出在nginx上面。使用替代法,关掉nginx和lighttpd,将nginx的端口换成80,没有任何问题。再将lighttpd监视81端口,也没有问题。所以问题就出在ngin和CI的配合问题上了。联系到AK系统里面,使用正常端口的时候,缩略图生成正常,而81端口则无法正常生成,需要手工将base_url删除用相对域名才能生成,这个问题ak一直升级了10几个版本了还没有解决来看,使用框架开发的程序估计都存在此类问题。
没办法,只好修改CI的congfig文件,将默认为空的base_url改成带端口的网站域名,问题解决。但这样局域网的lighttpd就无法使用了。 早晨查看了一下nginx的网站,发现升级后nginx的版本为1.1.19,而相隔11天就推出了1.2.0的stable版本,其中提到 *) Bugfix: a segmentation fault might occur in a worker process if the “try_files” directive was used; the bug had appeared in 1.1.19. 以我的水平是无法理解segmentation fault,但CI正是利用的try_files,而之前的1.1.15没有问题,晚上回去升级看看是不是这个问题。
已解决:回家之后升级nginx1.2.0,问题依旧。后来想到问题出在https上面,那就修改一下nginx的https设置,看配置文件里面,https是没有设置的,而提及https的只有fastcgi_param了,于是找到fastcgi_param 配置文件,里面果然有一行配置的是fastcgi_param HTTPS $https;估计是把非80端口都转到https上了,于是把这一行屏蔽掉,重启nginx,问题解决。 估计还是nginx版本的问题,等出了新的版本再尝试一下。