CentOS下Nginx从6升级到8后的问题汇总

系统是CentOS 5

因为最近爆的Nginx的安全漏洞,所以着手升级了Nginx

先升级一台从前端,出现的问题是ssl证书的问题

1.日志报错,并且新程序起不来

2011/08/26 17:55:21 [emerg] 6336#0: SSL_CTX_use_PrivateKey_file("/etc/nginx/ssl/xxx.key") failed (SSL: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt error:0906A065:PEM routines:PEM_do_header:bad decrypt error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)

然后查阅 nginx官网http://wiki.nginx.org/HttpSslModule

发现他们做sslkey的时候多做了一步

cp server.key server.key.org

openssl rsa -in server.key.org -out server.key

之前我直接用默认的 server.key,每次启动nginx都要启动的,然后现在使用这个新key之后,启动不需要密码了。

2.换到主前端之后,看启动没问题,但是日志报错:

2011/08/27 14:52:42 [emerg] 21997#0: eventfd() failed (38: Function not implemented)
2011/08/27 14:52:42 [alert] 21988#0: worker process 21989 exited with fatal code 2 and can not be respawn

并且看进程,只有一个主程序在启动,端口也连不上

到网上搜索错误日志,大体表明:Nginx 使用 Linux-native aio 需要 Linux 内核支持

主前端机的内核的确比较老(从前端的升级过),2.6.18-164.el5,然后升级到最新的2.6.18-238.19.1.el5,重启后正常

看官网论坛解释:

You have to recompile nginx *without* --with-file-aio configure
option.

Your system lacks eventfd() support and nginx compiled with
--with-file-aio configure option (on another host? compile on the
host in question with --with-file-aio should fail unless your
system headers screwed up) won't work on it.

大意是你需要重新编译nginx 并且 不带--with-file-aio这个参数,问题产生原因是系统不支持 eventfd() ,但是nginx却带了--with-file-aio编译的。所以就出问题了

所以。对于server来说,整体升级也是必要的,因为全升到最新,程序必然是没有问题的,但是只升级一个,有问题人家也不告诉我们。

相关推荐