Hi all:
应几位论坛朋友的强烈要求,我们研究出了extmail/extman+nginx+fcgi的正确配置,在这里和大家分享:
注意:4月25日晚更新了1下配置方法,增加了extman支持,测试过完全没问题!
1) 确认webmail或后台版本
extmail 1.0.4 或以前版本,extman 0.2.4 或以前版本 均适用于本文的内容。
2)修改extmail/libs/Ext/App.pm
大概716行左右的redirect函数定义,需要增加一行内容(见红字)
引用:
sub redirect {
my $self = shift;
my ($url, $mode) = @_;
print "Status: 301 Moved Permanantly\n";
print "Location: $url\n\n";
}
类似的extman里libs/Ext/MgrApp.pm也需要这样的修改
3)配置nginx的nginx.conf
在server section里:加上
引用:
location /extmail/cgi/ {
fastcgi_pass 127.0.0.1:8888;
include conf/fcgi.conf;
}
location /extmail/ {
alias /var/www/extsuite/extmail/html/;
}
location /extman/cgi/ {
fastcgi_pass 127.0.0.1:8888;
include conf/fcgi.conf;
}
location /extman/ {
alias /var/www/extsuite/extman/html/;
}
编辑conf/fcgi.conf内容:
引用:
#fastcgi.conf
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
重启动nginx,然后启动dispatch-init ,一切应该ok。请大家帮忙测试。下一版本的extmail及extman将不需要做2)的修改。其他配置暂时一致
修订
最近接到1,2个用户反映,本文的配置方法在某些情况下出问题,已经有朋友提供了解决办法,请参考:
http://www.extmail.org/forum/viewthread.php?tid=8699
如果大家对nginx的fcgi配置有兴趣,也不妨参考coolerfeng的blog这个帖子:
http://coolerfeng.blog.51cto.com/133059/97723