前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx禁用https证书实现转发

Nginx禁用https证书实现转发

作者头像
王先森sec
发布2023-10-17 15:21:10
7740
发布2023-10-17 15:21:10
举报
文章被收录于专栏:王先森

Nginx禁用https证书实现转发

王先森2022-08-212023-09-21

前言

最近有一个需求,如何禁用ssl证书,只用于Nginx 443端口转发流量?https服务器A和B 有 https 服务并提供两个 IP 以实现高可用。 例如https服务器 A[ip1:443] 和 B[ip2:443] 被路由到Nginx代理服务器上。 Nginx代理服务器没有 ssl_certificatessl_certificate_key使用 Nginx 代理模块将请求代理到实际的https服务器上。如何在没有SSL验证的情况下将443端口流量简单转发到后端。

使用nginx的stream、 stream_ssl_preread模块

参考资料

准备工作

  • nginx版本1.11.5及以上
  • 由于stream和stream_ssl_preread模块非默认引入,需要在编译安装nginx时引入;编译时添加配置参数 --with-stream--with-stream_ssl_preread_module

配置stream

惊为天人的Nginx Stream配置

代码语言:javascript
复制
stream {
  upstream default_backend_traefik_tls {
    server 10.1.1.130:30443 max_fails=3 fail_timeout=10s;
    }
  upstream default_backend_apisix_tls {
    server 10.1.1.120:31443 max_fails=3 fail_timeout=10s;
    }
 # 单个upstream配置
 # map $ssl_preread_protocol $upstream{
 #   default default_backend_traefik;
 # }
 # 通过不同域名区分upstream代理配置
    map $ssl_preread_server_name $upstream {
    default default_backend_traefik_tls;
    ~\.od\.com$ default_backend_traefik_tls;  # 访问xxx.od.com 会进入default_backend_traefik_tls。
    ~\.boysec\.cn$ default_backend_apisix_tls; # 访问xxx.boysec.cn 会进入到default_backend_apisix_tls。
  }
    upstream mongo_server {
        server 10.1.1.130:37017     max_fails=3 fail_timeout=30s;
    }
    upstream udpep_server {
        server 10.1.1.130:39300     max_fails=3 fail_timeout=30s;
    }
    
    server {
        listen 9300 udp;
        proxy_connect_timeout 1s;
        proxy_timeout 9s;
        proxy_pass udpep_server;
    }
    server {
        listen 27017;
        proxy_connect_timeout 1s;
        proxy_timeout 9s;
        proxy_pass mongo_server;
    }

  server {
    listen       443;
    ssl_preread on;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  
    proxy_ssl_server_name on;
    proxy_pass $upstream;
    #proxy_pass https://default_backend_traefik_tls;
    proxy_ssl_verify off;
    proxy_ssl_name default_backend_traefik_tls;
     }
}

stream 是在根这一层的,和什么 httpevents 是一个层级的。

[emerg] “stream” directive is not allowed 解决

在 nginx.conf 插入 stream 代码的时候报错, 显示的是nginx: [emerg] "stream" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:86

解决办法:

代码语言:javascript
复制
# 安装相关依赖
yum -y install nginx-mod-stream

# 如果安装了则需要
find / -name "ngx_stream_module.so"
cat /etc/nginx/nginx.conf
load_module /usr/local/nginx-1.18.0/modules/ngx_stream_module.so; # 在nginx.conf第一行添加。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nginx禁用https证书实现转发
  • 前言
  • 使用nginx的stream、 stream_ssl_preread模块
    • 参考资料
      • 准备工作
        • 配置stream
          • [emerg] “stream” directive is not allowed 解决
          相关产品与服务
          SSL 证书
          腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档