nginx 1.10 代理https 钉一钉

环境:

centos6.5

nginx:1.10

openssl:1.0.1e-15

测试样例一:

web访问 https协议的URL  https://test.xx.com/demo

nginx  开启证书配置,代理后端非安全协议的url,例如:http://xx.xx.com/xx

server {

listen 443;

server_name test.xxxx.com;

ssl                  on;

ssl_certificate      /etc/nginx/key_file/xxxx.crt;

ssl_certificate_key  /etc/nginx/key_file/xxxx.key;

ssl_session_timeout  5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

ssl_session_cache shared:SSL:50m;

ssl_prefer_server_ciphers on;

access_log /var/log/nginx/test.access.log;

error_log /var/log/nginx/test.error.log;

index index.html index.htm index.php index.jsp;

location /demo{

proxy_pass    http://x.x.x.x/demo;

proxy_redirect off;

client_max_body_size  8m;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 60s;

}

}

前端访问 https://test.xx.com/demo

这种模式在普通的后端server可以正常访问页面(数据转发之类的),但在负责多样式的页面调试会出现相关样式调用错误。

测试样例二:

web访问 https协议的URL  https://test.xx.com/demo

nginx  开启证书配置,代理后端安全协议的url,例如:https://xx.xx.com/xx

server {

listen 443;

server_name test.xxxx.com;

ssl                  on;

ssl_certificate      /etc/nginx/key_file/xxxx.crt;

ssl_certificate_key  /etc/nginx/key_file/xxxx.key;

ssl_session_timeout  5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

ssl_session_cache shared:SSL:50m;

ssl_prefer_server_ciphers on;

access_log /var/log/nginx/test.access.log;

error_log /var/log/nginx/test.error.log;

index index.html index.htm index.php index.jsp;

location /demo{

proxy_pass    https://x.x.x.x/demo;

proxy_redirect off;

client_max_body_size  8m;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 60s;

}

}

这种模式比较消耗后端性能。

此时:后端server https://172.10.18.34:8443/mpweb访问正常,

前端访问 https://test.xxxx.com/demo报502 错误,查访问日志

在代理与后端server之间的ssl协议会话的时候,出现一下错误:

[error] 7957#7957: *720292 SSL_do_handshake() failed (SSL: error:100AE081:elliptic curve routines:EC_GROUP_new_by_curve_name:unknown group error:1408D010:SSL routines:SSL3_GET_KEY_EXCHANGE:EC lib) while SSL handshaking to upstream, client: x.x.x.x, server: test.huiepay.com, request: "GET /favicon.ico HTTP/1.1", upstream: "https://172.10.18.34:8443/favicon.ico", host: "test.xxxx.com", referrer: "https://test.xxxx.com/mpweb"

通过测试样例一可以得出,排除后端server问题,依然是代理错误。

通过elliptic curve routines:EC_GROUP_new_by_curve_name:unknown group”根据这个报错信息判断是的 可以判断出: openssl什么版本

升级openssl以后

访问正常

总结:nginx代理ssl时候,有两种模式:

1、代理后端非ssl url

2、代理后端ssl url,此种方法一定注意openssl的版本,日志会有详细的说明,升级到最新的openssl版本再试。

时间: 2024-10-06 00:17:08

nginx 1.10 代理https 钉一钉的相关文章

nginx做正向代理https遇到SSL_do_handshake()握手失败

SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number) while SSL handshaking to upstream, client:...... 解决方式是配置文件增加: proxy_ssl_session_reuse off; location / { ... ... proxy_ssl_session_reuse off; ... ... } 原

Nginx反向代理https服务

背景: 最近因工作需要,需在web前端做一个代理,来解决部分用户不能访问的需求:之前通过nginx反向代理已实现对web的代理,但后来发现还有站点为https的,所以又找了些资料,整理了一下,测试完成. 方法: Nginx代理web站点ttxsgoto.com的相关部署和配置主要如下脚本实现: #!/bin/bash path_soft=$(pwd) function base(){ yum -y install  make gcc gcc-c++ autoconf } function ins

nginx 代理https后,spring mvc web应用redirect https变成http

前几天用nginx 代理https后,应用redirect https变成http,导致网站无法访问的问题,在网上找了半天,终于找到了解决方法了. 虽然自己解决了,我相信还有其他朋友遇到过这个问题,所以转载分享一下: 原因分析: 浏览器到nginx是https,nginx到应用服务器变成http, 应用服务器,再做302 redirect的时候,返回的redirect 地址就好变成http的地址: 原因是spring mvc的servlet的secheme取值,request.getScheme

haproxy代理https配置方法

记得在之前的一篇文章中介绍了nginx反向代理https的方法,今天这里介绍下haproxy代理https的方法: haproxy代理https有两种方式:1)haproxy服务器本身提供ssl证书,后面的web服务器走正常的http 2)haproxy服务器本身只提供代理,后面的web服务器走https(配置ssl证书) 第一种方式:haproxy服务器本身提供ssl证书 注意:需要编译haproxy的时候支持ssl编译参数: #make TARGET=linux26 USE_OPENSSL=

CentOs 7.2 + Nginx 1.10.2 + MusicStore(asp.net core mvc 3 项目)虚拟机完整搭建流程分享

原创辛苦,谢绝转载! 虚拟机说明 搭建这个虚拟机是为了验证Asp.net Core程序在CentOs操作系统上可以运行的. #软件环境版本枚举OS:CentOS Linux release 7.2.1511 (Core) OS Kernel:Linux version 3.10.0-327.36.3.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) ) #1 SMP Mon Oct

Nginx实现反向代理负载均衡与静态缓存

介绍: Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.在连接高并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应. 实验环境: Hostname IP 系统 规划 n2.preferred 192.168.1.2 Centos 6.5 Web server n3.preferred 192.168.1.3 Centos 6.5 Web server n6.preferred 192.168.1.6

Nginx构建反向代理缓存服务器

防伪码:曾经沧海难为水,除却巫山不是云. 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端:  反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提

Nginx之反向代理、日志格式、集群、缓存、压缩、URl 重写,读写分离配置

location的模式匹配按照优先级由低到高有以下四种: Nginx作为一个优秀的Web服务器,不仅在处理静态内容上比Apache优秀,还经常被用来做反向代理服务器,且支持缓存,URL重写,自定义格式,读写分离等功能,并且支持在TCP/IP第七层实现集群功能,基于AIO(异步I/O)event_driven(事件驱动)mmap(内存映射)等机制和功能,具有轻量级.高性能.消耗低.特性丰富.配置简单等特点 实验环境: node1:192.168.139.2 node2:192.168.139.4

nginx配置反向代理概述

一.nginx反向代理:Web服务器的调度器 1.反向代理(Reverse Proxy)方式是指以代理服务器来接受客户端的连接请求,然后将请求转发给网络上的web服务器(可能是apache.nginx.tomcat.iis等),并将从web服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个服务器. 图上可以看出:反向代理服务器代理网站Web服务器接收Http请求,对请求进行转发.而且nginx作为反向代理服务器可以根据用户请求的内容把请求转发给后端不同的web服务器,例如静