Nginx出现The plain HTTP request was sent to HTTPS port问题解决方法
今天在配置Nginx+SSL的时候出现如题的错误,后来与度娘一番云雨之后找到一个解决方法,挺有用,随手转之。
一般在vhost的配置中会有php解析的一段,如:
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;
这样是没错,不过强迫使用这个参数,不太有效!
最好的答案就是 fastcgi_param HTTPS $https if_not_empty; (参考下面 nginx 官方的链接),有 https 协议时才自动使用 https on,否则忽略 fastcgi_param HTTPS 这个参数。
内嵌的变量:
$https – 如果链接是 SSL 就返回 “ON”,否则返回空字符串。
if_not_empty; – 当参数有值时才传递到服务器
注意:这个方法只适合 Nginx 1.1.11 之后的版本
相关推荐
-
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
微信小程序Server环境配置详解 主要内容: 1. SSL免费证书申请步骤 2. Nginx HTTPS 配置 3. TLS 1.2 升级过程 微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申请SSL证书 小程序也要求 TLS(传输层安全协议)的版本至少为 1.2,在配置好 https之后,如果 TLS 的版本较低,就涉及到升级问题 所以 Server端环境配置的主要步骤: 申请 SSL 证书 配置web服务器支持https(我使用的是nginx)
-
Nginx实现根据域名http、https分发配置示例
tomcat端口:8080 做好虚拟主机 nginx端口:80 根据域名分派 在conf/nginx.conf中的http中增加 复制代码 代码如下: include www.jb51.net.conf 新建conf/www.jb51.net.conf,内容如下: 复制代码 代码如下: server { listen 80; server_name www.jb51.net; location / { proxy_pass http://127.0.0.1:8080; proxy
-
使用Nginx实现HTTPS双向验证的方法
https单向验证应用广泛想必大家都很熟悉,我已经在一篇博文中分享过,这次来看看Nginx如何实现双向验证. 单向验证与双向验证的区别: 单向验证: 指客户端验证服务器端证书,服务器并不需要验证客户端证书. 双向验证:指客户端验证服务器端证书,而服务器也需要通过CA的公钥证书来验证客户端证书. 详细的握手过程: 单向验证 浏览器发送一个连接请求给安全服务器. 1.服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. 2.客户浏览器检查服务器送过来的证书是否是由自己信赖的CA中心所签发的.如
-
Nginx+Tomcat+Https 服务器负载均衡配置实践方案详解
由于需要,得搭建个nginx+tomcat+https的服务器,搜了搜网上的发现总是有错,现在整理了些有用的,备忘. 环境:Centos6.5.JDK1.8.Tomcat8.Nginx1.10.1 准备材料: 1.JDK1.8安装包jdk-8u102-linux-x64.tar.gz 2.Tomcat8安装包apache-tomcat-8.0.37.tar.gz 3.Nginx1.10安装包nginx-1.10.1.tar.gz 1.JDK安装配置 解压并安装到/usr/local/jdk [r
-
详解阿里云LINUX服务器配置HTTPS(NGINX)
背景说明 服务器为阿里云 ECS,操作系统为 CentOS 6.5. 部署配置说明 第一步,安装nginx 之所以要先安装 nginx,是因为下面配置域名解析的时候可以直接在浏览器看到效果,当然了,先配置域名,然后 ping 一下也是可以的 下载Nginx源码包,解压源码包,进入解压后的目录,编译配置,命令如下: ./configure --prefix=/usr/local/nginx --with-http_ssl_module 以上命令将nginx安装到usr/local/nginx目录下
-
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
HTTPS简介 HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.Https使用的默认端口是443.更多HTTPS原理可以参考阮一峰老师的文章:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html SSL证书 证书类
-
Linux下nginx配置https协议访问的方法
一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 如下所示: configure arguments: --prefix=/usr/local/nginx --with-google_perftools_module --without-http_memcached_module --user=www --group=www --
-
Nginx搭建https服务器教程
HTTPS简介 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 它是一个URI scheme(抽象标识符体系),句法类同http:体系,用于安全的http数据传输.https使用的默认端口是443. SSL证书 证书类型简介 要设置安全服务器,使用公共钥创建一对公私钥对.大多数
-
CentOS7 配置Nginx支持HTTPS访问的实现方案
CentOS7配置Nginx支持HTTPS访问 1.安装git和bc yum -y install git bc 2.安装Nginx 1.准备: yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 2.下载: wget https://nginx.org/download/nginx-1.11.6.tar.gz 3.解压: tar zxvf nginx-1.11.6.tar.gz 4.编译安装:
-
详解Nginx服务器中配置全站HTTPS安全连接的方法
HTTPS就等于HTTP加上TLS(SSL),HTTPS协议的目标主要有三个: 数据保密性.保证内容在传输过程中不会被第三方查看到.就像快递员传递包裹时都进行了封装,别人无法知道里面装了什么东西. 数据完整性.及时发现被第三方篡改的传输内容.就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收. 身份校验.保证数据到达用户期望的目的地.就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方. 启用
随机推荐
- JS实现浏览器打印、打印预览示例
- asp中通过addnew添加内容后取得当前文章的自递增ID的方法
- jQuery处理xml格式的返回数据(实例解析)
- jQuery循环滚动展示代码 可应用到文字和图片上
- java调用oracle分页存储过程示例
- IOS观察者设计模式
- JS使用插件cryptojs进行加密解密数据实例
- 使用DataTable更新数据库(增,删,改)
- Laravel 5 框架入门(三)
- thinkphp3.2点击刷新生成验证码
- python设计模式大全
- 简单的ASP分页代码(测试正确)第1/2页
- Toolbar制作菜单条过程详解
- Vue上传组件vue Simple Uploader的用法示例
- ajax加载页面服务器返回 304 not modified
- jQuery实现页面顶部下拉广告
- Java8之lambda最佳实践_动力节点Java学院整理
- C#枚举中的位运算权限分配浅谈
- Android学习笔记——Menu介绍(三)
- 局域网中工作组和域之间的差别