前一篇文章《Nginx配置SSL安全证书及解决PEM_read_bio:bad end line error错误》简单介绍了Nginx下SSL安全证书的配置,本来以为这样就算配置完成了,实际不然,首先发现WordPress的AdminSSL无法正常工作,显示有太多的递归转向,也就是说无限循环的跳转,就是无法转到https上,具体错误如下:
Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.
在FireFox火狐下有可能错误是这样的:
Redirection limit for this URL exceeded. Unable to load the requested page. This may be caused by cookies that are blocked.
原先以为是插件问题,想用PHPMyAdmin操作数据库移除插件,利用https的安全方式尝试登录数据库时出现以下错误:
400 Bad Request
The plain HTTP request was sent to HTTPS port
同时地址也变成了类似于http://localhost:443/index.php,也就是表单没有提交到SSL的https上,而是以普通方式提交到443端口,大家都知道443端口是SSL的传输端口,正确的传输方式应该是https协议。
搜索网络得到这篇文章《Nginx下解决 https跳转出现400 Bad Request》。原文作者参考了此文《Nginx and $_SERVER['HTTPS']》,下面我再简单的说明一下解决办法:
1. 查看/usr/local/nginx/conf/nginx.conf 配置,注意include字样,我这里是fastcgi_params文件,也可能是fcgi.conf文件。找到这个文件,用vi打开:
vi /usr/local/nginx/conf/fcgi.conf
# 或者是下面这句,取决于你的配置文件位置
vi /etc/nginx/fastcgi_params
然后在文件的结尾添加下面这句:
fastcgi_param HTTPS $fastcgi_https;
2. 修改网站对应的配置文件,可以是conf文件或者是sites-enabled文件夹中的默认配置文件,我这里主要是sites-enabled文件夹中的默认配置文件default,利用vi修改。
vi /etc/nginx/sites-enabled/default
在文件的顶部(注意不要放到server{}里面)加上下面这段代码:
map $scheme $fastcgi_https {
default off;
https on;
}
3. 运行/usr/local/nginx/sbin/nginx -t检查一下配置文件有没有语法错误。
4. 利用命令/etc/init.d/nginx restart重启Nginx。
至此,PHPMyAdmin和WordPress后台AdminSSL插件均成功运行,并切换到https上,问题完美解决:-)