Nginx配置SSL安全证书并解决HTTPS的400 Bad Request问题

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

前一篇文章《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打开:

1
2
3
vi /usr/local/nginx/conf/fcgi.conf
# 或者是下面这句,取决于你的配置文件位置
vi /etc/nginx/fastcgi_params

然后在文件的结尾添加下面这句:

1
fastcgi_param  HTTPS $fastcgi_https;

2. 修改网站对应的配置文件,可以是conf文件或者是sites-enabled文件夹中的默认配置文件,我这里主要是sites-enabled文件夹中的默认配置文件default,利用vi修改。

1
vi /etc/nginx/sites-enabled/default

在文件的顶部(注意不要放到server{}里面)加上下面这段代码:

1
2
3
4
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上,问题完美解决:-)

若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!

请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注