正常nginx配置了SSL是可以通过HTTPS访问后端的,但是对有配置SNI + https后端的支持有点麻烦。

编译安装nginx后,看一下是否支持SNI

/usr/local/nginx/sbin/nginx -V 2>&1 |grep SNI

如果有TLS SNI support enabled就表示支持SNI

配置nginx

修改nginx安装后的conf/nginx.conf文件

以下是我的server配置节

upstream backend {
server 127.0.0.1:;
} server {
listen ssl http2;
server_name mytest.com;
ssl_protocols SSLv3 TLSv1. TLSv1. TLSv1 SSLv2;
access_log logs/proxy_access.log main;
error_log logs/error.log info;
underscores_in_headers on; location / {
#针对源点使用https+SNI,需要下面两段
proxy_ssl_server_name on;
prox_ssl_name $host;

#proxy_ssl_verify默认是off的,如果是on,源点的证书必须是正确的
proxy_ssl_verify off;
proxy_pass https://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header cookie $http_cookie;
proxy_set_header Proxy-Connection "";
proxy_http_version 1.1;
}
}

最重要的就是

            proxy_ssl_server_name on;
prox_ssl_name $host;

以上配置,注意以下几点:

1、proxy_pass 后面是upstream中设置的后端源点

2、建议不要设置proxy_ssl_verify 因为默认是off,如果配置了on,请确保你的源服务器中有正确的SSL证书,不能造假

3、这三个是一定要加的

proxy_set_header Host $http_host;
proxy_set_header Proxy-Connection "";
proxy_http_version 1.1;

这两个也是要加的
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

4、处理源点是开启 https + SNI 的,最关键的两段
proxy_ssl_server_name on;
prox_ssl_name $host;

重启nginx

一些参考资料:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_name

一些参考资料:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name

一些不重要的参考资料:https://www.jianshu.com/p/999ac06e3934

nginx反向代理https访问502, nginx反向代理, 支持SNI的https回源,SNI源点,nginx反向代理报错的更多相关文章

  1. nginx: [emerg] unknown directive “ ” in /usr/local/nginx/conf/vhost/XXX.conf:53报错处理

    开发同事发给我一小段nginx配置,加到服务器上之后,执行nginx -s reload时,出现报错: nginx: [emerg] unknown directive “ ” in /usr/loc ...

  2. 使用nginx做反向代理来访问tomcat服务器

    本次记录的是使用nginx来做一个反向代理来访问tomcat服务器.简单的来说就是使用nginx做为一个中间件,来分发客户端的请求,将这些请求分发到对应的合适的服务器上来完成请求及响应. 第一步:安装 ...

  3. 用nginx做反向代理来访问防外链图片

    用nginx做反向代理来访问防外链图片 女儿的博客从新浪搬到wordpress后,发现原来博客上链接的新浪相册的图片都不能访问了,一年的博客内容,一个个去重新上传图片,修正链接也是个大工程.还是得先想 ...

  4. nginx反向代理vue访问时浏览器加载失败,出现 ERR_CONTENT_LENGTH_MISMATCH 问题

    问题说明:测试机上部署了一套业务环境,nginx反向代理tomcat,在访问时长时间处于加载中,十分缓慢! 通过浏览器调试(F12键->Console),发现有错误ERR_CONTENT_LEN ...

  5. 源码安装Nginx加TCP反向代理模块

    说明: 安装方式是源码编译安装,因此先安装相关依赖,否则报错. yum -y install gcc* patch openssl openssl-devel 安装步骤: 下载nginx源码包: wg ...

  6. Nginx反向代理上传大文件报错(failed to load resource : net :: ERR_CONNECTION_RESET)

    转自: https://blog.csdn.net/kinginblue/article/details/50753271?locationNum=14&fps=1 Nginx反向代理上传大文 ...

  7. Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器

    1.  规划 域名 解析IP Nginx代理 htpps://www.devcult.com 47.88.10.155   htpps://auto.devcult.com 47.88.10.155 ...

  8. nginx反向代理 报错:Error during WebSocket handshake: Unexpected response code: 403

    遇到nginx报错:websocket wss failed: Error during WebSocket handshake: Unexpected response code: 403 serv ...

  9. https方式nginx 代理tomcat访问不带www的域名301重定向跳转到www的域名帮助seo集中权重

    比如我要把 http://gucanhui.com http://www.gucanhui.com 跳转到https://www.gucanhui.com 用F12的network可以看到状态码301 ...

随机推荐

  1. 带输入提示的搜索框ajax请求

    先放图 首先要引用的文件有: base.css  https://www.cnblogs.com/chenyingying0/p/12363689.html jquery.js transition. ...

  2. 聊聊GIS数据的四个分层与GIS服务

    本篇不讨论矢量栅格数据的结构,也不讨论矢量与栅格的区别(即设定读者有这方面的基础). 版权声明:原创.博客园/B站/小专栏/知乎/CSDN @秋意正寒 转载请标注原地址并声明转载: https://w ...

  3. Android中ProgressBar的使用-通过Handler与Message实现进度条显示

    场景 进度条效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改为 ...

  4. ACP知识总结

    由于ACP是一个敏捷开发的系统性知识,下面只针对我自身学习的知识总结,若需要完整的考试学习资料,可评论区或私聊我拿.   敏捷估计与规划.png   ACP知识点锦集.png   敏捷项目软件总结.p ...

  5. redis中key键操作

    keys */查看所有的key remoteSelf:1>select 0 "OK" remoteSelf:0>keys * 1) "SUBCRIBEMAP& ...

  6. CentOS6 用yum安装mysql详解,简单实用

    一.查看CentOS下是否已安装mysql 输入命令 :yum list installed | grep mysql 二.删除已安装mysql 输入命令: yum -y remove mysql 如 ...

  7. KINDLE 小说下载--超级书库

       网址:https://shuayouxi.cn/

  8. 在简单的JDBC程序中使用ORM工具

    本文来自[优锐课]——抽丝剥茧,细说架构那些事. ORM(对象关系映射)是用于数据库编程的出色工具.只需一点经验和Java注释的强大功能,我们就可以相对轻松地构建复杂的数据库系统并利用生产力.关系数据 ...

  9. ts中的装饰器

    // 装饰器一种特殊的类的声明, 扩展类.属性.方法. function logClass(params:any) { console.log(params); // params代表HttpClic ...

  10. Galactic Collegiate Programming Contest Gym - 101572G 模拟

    #include<bits/stdc++.h> using namespace std; int n,m; struct node { int id; int slove; int pen ...