Nginx配置SSL安全证书并解决HTTPS的400 Bad Request问题
提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!
前一篇文章 《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上,问题完美解决:-)
[...] 文章导航 ← 上一篇 下一篇 → [...]