Nginx采用https加密访问后出现的问题

线上的一个网站运行了一段时间,应领导要求,将其访问方式更改为https加密方式。 更改为https后,网站访问正常,但网站注册功能不能正常使用了!

经过排查,是nginx配置里结合php部分漏洞了一个参数(fastcgi_param  HTTPS )导致,添加上这个参数后,问题迎刃而解! nginx支持https的配置时,需要在php区域配置中添加FastCGI服务,否则https不支持php文件。

location ~ \.php$ { root /var/www/vhosts/fff/main; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 30; fastcgi_index fff.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #include fastcgi_params; include fastcgi.conf; fastcgi_param HTTPS on;                        【或者fastcgi_param HTTPS     $https if_not_empty; 】 } }

*************************************************************************************************

如何开启 Nginx 的 SSL 或者 HTTPS呢?

大家有没有试过使用HTTPS登陆 phpmyadmin 的时候会自动返回“The plain HTTP request was sent to HTTPS port”?

这是个 fastcgi 的配置问题!

解决方法:

location ~ .*\.(php|php5)?$ { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_param HTTPS     $https if_not_empty; fastcgi_index index.php; include fcgi.conf; }

解释:

很多人认为使用 fastcgi_param HTTPS on;,这样是没错啦,不过强迫使用这个参数,可能不太有效!

最好的答案是上面的配置(参考下面 nginx 官方的链接)

fastcgi_param HTTPS $https if_not_empty;

有 https 协议时才自动使用 https on,否则忽略这个参数。

内嵌的变量:

$https – 如果链接是 SSL 就返回 “ON”,否则返回空字符串。

if_not_empty; – 当参数有值时才传递到服务器

注意:这个 if_not_empty 额外参数只适合 Nginx 1.1.11 之后的版本

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何使用Python-GnuPG和Python 3验证代码和加密数据

GnuPG包提供用于生成和存储加密密钥的完整解决方案。它还允许您加密和签名数据和通信。

6478
来自专栏北京马哥教育

5分钟教你学会Django系统错误监控

django.utils.log.AdminEmailHandler为django处理系统日志发送邮件的handler

1913
来自专栏北京马哥教育

5分钟教你学会Django系统错误监控

话不多说,直入正题。 先上图,看一下监控的效果。 如下是监控我们网站系统错误的邮件。包含了请求的url地址,以及详细的异常信息。 一、监控所有的request...

3726
来自专栏Youngxj

bat锁机代码

2.8K9
来自专栏Python专栏

Python | 5分钟教你学会Django系统错误监控

如何实现系统监控,自动发送错误日志的邮件呢?只需配置配置settings文件即可。

1173
来自专栏散尽浮华

Nginx的https配置记录以及http强制跳转到https的方法梳理

一、Nginx安装(略) 安装的时候需要注意加上 --with-http_ssl_module,因为http_ssl_module不属于Nginx的基本模块。 ...

81310
来自专栏令仔很忙

新手学Linux(六)----安装Nginx

nginx是C语言开发,建议在linux上运行,本教程使用Centos7.0作为安装环境。

2222
来自专栏王磊的博客

svn 客户端批量备份数据(图+文)

缘由 商业用途的规则,数据与谨慎便成了不可替代的王道,我今天也说svn,在客户端批量备份数据。 前提 考虑跨平台与易用性,选择批处理(.bat),既然是批处理,...

3848
来自专栏惨绿少年

SSH服务详解

第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Wo...

3730
来自专栏Timhbw博客

如何让nginx服务器抵御DDOS攻击

DDOS是一种通过大流量的请求对目标进行轰炸式访问,导致提供服务的服务器资源耗尽进而无法继续提供服务的攻击手段。一般情况下,攻击者通过大量请求与连接使服务器处于...

5119

扫码关注云+社区

领取腾讯云代金券