nginx服务器怎么设置httpsnginx https 请求http

项目需求:webservice接口需要通过https访问。
思路:用nginx进行配置,方便灵活。 也可以用resin或者tomcat配置
测试环境:centos 6.3 、nginx 1.0.15(web服务器) 、resin3.1.12(应用服务器)
参考文档:
(centos6.3默认已经安装过OpenSSL库)
一、生成证书:
可以通过以下步骤生成一个简单的证书:
# 1、首先,进入你想创建证书和私钥的目录,例如:
cd /etc/nginx/
# 2、创建服务器私钥,命令会让你输入一个口令:
openssl genrsa -des3 -out server.key 1024
# 3、创建签名请求的证书(CSR):
openssl req -new -key server.key -out server.csr
# 4、在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
# 5、最后标记证书使用上述私钥和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
二、配置nginx:
#进入nginx目录
cd /etc/nginx/conf.d
vi ssl.conf
修改Nginx配置文件,让其包含新标记的证书和私钥,下面是我的配置文件:
# HTTPS server configuration
ssl_certificate
/etc/nginx/server.
ssl_certificate_key
/etc/nginx/server.
ssl_session_timeout
ssl_protocols
SSLv2 SSLv3 TLSv1;
ssl_ciphers
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_
location / {
testssl.html index.html index.
proxy_set_header Host $
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
proxy_pass http://192.168.3.94/ssl/;
重启nginx,在浏览器输入:https://192.168.3.94 会跳转到&http://192.168.3.94/ssl/ 这个地址(后期调整为webservice接口地址即可)
三、受浏览器信任的StartSSL免费SSL证书:
跟VeriSign一样,StartSSL(网址:,公司名:StartCom)也是一家CA机构,
它的根证书很 久之前就被一些具有开源背景的浏览器支持(Firefox浏览器、谷歌Chrome浏览器、苹果Safari浏览器等)。
四、项目需要,将访问目录&\services\ &由http访问&重定向到 https (解决方法:nginx rewrite 加上 location 方式实现)
location ~ /services/.*$ {
if ($server_port ~ "^80$"){
set $rule_0 1$rule_0;
if ($rule_0 = "1"){
rewrite /(.*) https://192.168.3.184/$1
/usr/share/nginx/
除非注明,
&文章均为原创,转载请以链接形式标明本文地址
本文地址:Connection timed out
Connection timed outNginx配置SSL证书部署HTTPS网站_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Nginx配置SSL证书部署HTTPS网站
来源:Linux社区&
作者:ivanwan
一、什么是 SSL 证书,什么是 HTTPSSSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;2、用户可以通过服务器证书验证他所访问的网站是否真实可靠。
HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层。HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443。
推荐阅读:
基于OpenSSL实现C/S架构中的HTTPS会话
RHEL6.3下配置简单Apache HTTPS&
Nginx搭建HTTPS服务器
Linux实现HTTPS方式访问站点
二、什么网站需要使用SSL证书1、购物交易类网站不用多说,网上银行、支付宝、Paypal等肯定会全程加密以保护你的信息安全。
2、注册与登陆一些大的网站,比如电子邮箱,注册会员或者登陆的时候,会专门通过SSL通道,保证密码安全不被窃取。
3、某些在线代理这个。。。嗯哼,就不说了。
4、装B比如我&&
三、自行颁发不受浏览器信任的SSL证书为晒晒IQ网颁发证书。ssh登陆到服务器上,终端输入以下命令,使用openssl生成RSA密钥及证书。
# 生成一个RSA密钥
$ openssl genrsa -des3 -out 33iq.key 1024
# 拷贝一个不需要输入密码的密钥文件
$ openssl rsa -in 33iq.key -out 33iq_nopass.key
# 生成一个证书请求
$ openssl req -new -key 33iq.key -out 33iq.csr
# 自己签发证书
$ openssl x509 -req -days 365 -in 33iq.csr -signkey 33iq.key -out 33iq.crt
第3个命令是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,而是在第4步自己签发了证书。
编辑配置文件nginx.conf,给站点加上HTTPS协议
server_name YOUR_DOMAINNAME_HERE;
listen 443;
ssl_certificate /usr/local/nginx/conf/33iq.
ssl_certificate_key /usr/local/nginx/conf/33iq_nopass.
# 若ssl_certificate_key使用33iq.key,则每次启动Nginx服务器都要求输入key的密码。
重启Nginx后即可通过https访问网站了。
自行颁发的SSL证书能够实现加密传输功能,但浏览器并不信任,会出现以下提示:
四、受浏览器信任的证书要获取受浏览器信任的证书,则需要到证书提供商处申请。证书授证中心,又叫做CA机构,为每个使用公开密钥的用户发放一个数字证书。浏览器在默认情况下内置了一些CA机构的证书,使得这些机构颁发的证书受到信任。即是一个著名的国外CA机构,工行、建行、招行、支付宝、财付通等网站均使用VeriSign的证书,而网易邮箱等非金融网站采用的是中国互联网信息中心 CNNIC颁发的SSL证书。一般来说,一个证书的价格不菲,以VeriSign的证书为例,价格在每年8000元人民币左右。
据说也有免费的证书可以申请。和VeriSign一样,也 是一家CA机构,它的根证书很久之前就被一些具有开源背景的浏览器支持(Firefox浏览器、谷歌Chrome浏览器、苹果Safari浏览器等)。后 来StartSSL竟然搞定了微软:在升级补丁中,微软更新了通过Windows根证书认证(Windows Root Certificate Program)的厂商清单,并首次将StartCom公司列入了该认证清单。现在,在Windows 7或安装了升级补丁的Windows Vista或Windows XP操作系统中,系统会完全信任由StartCom这类免费数字认证机构认证的数字证书,从而使StartSSL也得到了IE浏览器的支持。(来源及)
五、只针对注册、登陆进行https加密处理既然HTTPS能保证安全,为什么全世界大部分网站都仍旧在使用HTTP呢?使用HTTPS协议,对服务器来说是很大的负载开销。从性能上考虑,我 们无法做到对于每个用户的每个访问请求都进行安全加密(当然,Google这种大神除外)。作为一个普通网站,我们所追求的只是在进行交易、密码登陆等操 作时的安全。通过配置Nginx服务器,可以使用rewrite来做到这一点。
在https server下加入如下配置:
if ($uri !~* "/logging.php$")
rewrite ^/(.*)$ http://$host/$1
在http server下加入如下配置:
if ($uri ~* "/logging.php$")
rewrite ^/(.*)$ https://$host/$1
这样一来,用户会且只会在访问logging.php的情况下,才会通过https访问。
更新:有一些开发框架会根据 $_SERVER['HTTPS'] 这个 PHP 变量是否为 on 来判断当前的访问请求是否是使用 https。为此我们需要在 Nginx 配置文件中添加一句来设置这个变量。遇到 https 链接重定向后会自动跳到 http 问题的同学可以参考一下。
server {& & ...& & listen 443;& & location \.php$ {& & & & ...& & & & include fastcgi_& & & & fastcgi_param HTTPS # 多加这一句& & }}&server {& & ...& & listen 80;& & location \.php$ {& & & & ...& & & & include fastcgi_& & }}
参考链接:
Nginx下只针对logging.php进行https处理的重写规则
全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL&
Nginx 的详细介绍:Nginx 的下载地址:
相关资讯 & & &
& (08/19/:41)
& (08/26/:04)
& (12/16/:44)
& (04/10/:01)
& (07/22/:04)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
deam 发表于 mark
(0) deajosha 发表于 不错
(0) zxz108318 发表于 能问一下注册登陆具体都需要配置什么吗,是不是先配置一个虚拟主机侦听443端口,然后加入那两条重写规则就可以啊TA的最新馆藏sxfenglei 的BLOG
用户名:sxfenglei
访问量:969
注册日期:
阅读量:5863
阅读量:12276
阅读量:395525
阅读量:1086272
51CTO推荐博文
在做公司项目的时候使用了第三方的API接口,且接口采用的是https请求,在本地的wamp集成环境开发测试正常,放到服务器上结果报错 nginx 502 bad gateway。在论坛中爬楼了几天今天终于找到原因,php版本问题;公司项目线上环境:服务器安装了wdcp其中nginx是1.4.2版本 php是5.2.17版本部署项目上去后,怎么运行都报502错,刚开始怀疑是nginx配置问题,百度了许久说请求https需要ssl于是配置了nginx的ssl后问题依旧,无奈只好继续搜索答案。这是在wdcp论坛找到的php升级5.3脚本:wget&sh php_up53.sh---------------------------------------------问了找到nginx 502 bad gateway错误,于是乎在本地服务器安装了wdcp进行测试。1、安装wdcp,创建网站项目;2、编写测试代码,index.php;&?php
//&初始化一个&cURL&对象
$curl&=&curl_init();
//&刚开始抓取了,但是页面弹框,后来改用抓取支付宝首页测试
curl_setopt($curl,&CURLOPT_URL,&'');
//&设置header
curl_setopt($curl,&CURLOPT_HEADER,&1);
//&设置cURL&参数,要求结果保存到字符串中还是输出到屏幕上
curl_setopt($curl,&CURLOPT_RETURNTRANSFER,&1);
//&运行cURL,请求网页数据
$data&=&curl_exec($curl);
//&关闭cURL请求
curl_close($curl);
//&打印出抓取的测试数据
var_dump($data);3、浏览器请求页面
(这里是虚拟域名配置hosts来的)结果报错5024、tail -f /www/wdlinux/nginx/logs/error.log查看请求错误日志,从日志看是上游过早关闭连接。。。。(什么意思)*59&upstream&prematurely&closed&connection&while&reading&response&header&from&upstream,&client:&192.168.0.102,&server:&,&request:&"GET&/&HTTP/1.1",&upstream:&"http://127.0.0.1:88/",&host:&""5、百度 在wdcp论坛爬楼到一篇帖子,说要升级PHP版本,并提供了升级脚本php_up53.sh于是升级结果就真的就好了。---------------------------------------虽然目前好不知道问什么,但是先记录下nginx下的php函数curl请求Https报错502升级php到5.3以上包括5.3即可。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 nginx转发https请求 的文章

 

随机推荐