线上的一个网站运行了一段时间,应领导要求,将其访问方式更改为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 之后的版本

Nginx采用https加密访问后出现的问题的更多相关文章

  1. lnmp之Nginx配置https加密访问

    配置lnmp之Nginx网站支持https加密访问 注: 1. 这里拿购买的(pxsnx.pxjy.com)证书来做样例 证书文件共有三个---> (pxsnxg.pxjy.com_ca.crt ...

  2. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  3. Linux下nginx配置https协议访问

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  4. Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  5. 为阿里云域名配置免费SSL支持https加密访问简单教程

    阿里云之前有免费ssl入口申请,现在已经关闭了.那么现在怎么为自己的域名配置https呢? 首先打开阿里云域名控制台,如以下界面.(这里暂且用我的这个域名讲解吧)  如上图点击ssl证书,点击单域名免 ...

  6. IOS 采用https 协议访问接口

    申请好证书后,发现ios 仍无法使用https协议访问到数据,发现ios 需要ssl 支持 TLS1.2 . 更改nginx 配置: ssl_protocols TLSv1 TLSv1. TLSv1. ...

  7. CentOS 7 配置HTTPS加密访问SVN

    上一篇文章已经介绍了如何在CentOS7环境下安装SVN并整合HTTP访问 http://www.cnblogs.com/fjping0606/p/7581093.html 那么本文则介绍如何添加HT ...

  8. nginx 采用https 协议通信配置

    在网络通信中,使用抓包软件可以对网络请求进行分析,并进行重放攻击,重放攻击的解决方案一般是使用一个变化的参数,例如RSA加密的时间戳,但考虑到网络传输时延,时间戳需要有一定的误差容限,这样仍然不能从根 ...

  9. tomcat使用自签名证书实现https加密访问

    部署好java环境和tomcat之后 执行以下语句 #生成证书,keytool是java工具命令,-genkey生成证书,-alias证书名称,-keyalg应该是指算法,-keystore是证书存储 ...

随机推荐

  1. 精简CSS代码

    精简CSS代码可以帮助减小样式文件的大小,使代码清晰,方便维护. 使用简写属性及默认值 .header { margin-top: 10px; margin-right: 20px; margin-b ...

  2. JavaScript强化教程——Cocos2d-JS中JavaScript继承

    javaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求.由于Cocos2d-JS引擎是从Cocos2d-x演变而来 ...

  3. jQuery中的尺寸及位置的取和设

    1.offset(); 获取位置值: $(selector).offset().left; $(selector).offset().top; 设置位置值: $(selector).offset({t ...

  4. 对抗静态分析——运行时修复dex

    对抗静态分析——运行时修复dex   本文来源:i春秋社区-分享你的技术,为安全加点温度 零.写在前面   这个系列本来题目想写对抗反编译,可是想想对抗反编译的这个范围有点大,总结如下 灵魂作图   ...

  5. Java 中Comparator 的使用,实现集合排序

    目标:实现对Person 对象的年龄,从小到大排序 1.实现排序 package com.app; import java.util.ArrayList; import java.util.Colle ...

  6. IOS 网络浅析-(八 NSURLSession简介)

    就在不长也不短的时间前,苹果正式命令咱们要向NSURLSession看,因此我们不得不认认真真的听从老大的教导,努力认知NSURLSession.其实呢,三方早已为我们解决了问题,但是呢,我们还是有必 ...

  7. Android开发者的Git&GitHub(二)

     将代码托管到GitHub上 点击右上角New repository按钮来创建一个版本库 命名后选择添加一个Android项目类型的.gitignore文件,并选择开源协议(例如:Apache v2 ...

  8. WebService学习总结(二)——WebService相关概念介绍

    一.WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际 ...

  9. 2013MPD上海6.22 PM 陆宏杰:通往卓越管理的阶梯 & 6.23AM Ray Zhang 产品创新管理的十八般武艺

    MPD2天的内容,参加了5个课程,其中2个是管理的,分别是陆宏杰老师的<通往卓越管理的阶梯>和Ray Zhang大师的<产品创新管理的十八般武艺>.他们2个人都谈到了一个关于招 ...

  10. Google自定义搜索引擎

    本文主要介绍如何通过Google的API来定义自己的搜索引擎,并将Google搜索框嵌入到自己的web页面.另外,分析了自定义搜索引擎请求数据的url,模拟请求并获取搜索的结果. 1 写在前面 前段时 ...