nginx 同一个端口支持http和https配置

原理:使用nginx的stream、 stream_ssl_preread模块
由于stream和stream_ssl_preread模块非默认引入,需要在编译安装nginx时引入;编译时添加配置参数 --with-stream --with-stream_ssl_preread_module

1、编译nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream --with-stream_ssl_preread_module --with-stream_ssl_module

执行make & make install

2、配置nginx.conf

添加stream配置,让其识别到http访问时默认走http,其余走https

stream {upstream  http_gateway {server  127.0.0.1:80801;}upstream  https_gateway {server  127.0.0.1:80802;}map $ssl_preread_protocol $upstream {default http_gateway;"TLSv1.0" https_gateway;"TLSv1.1" https_gateway;"TLSv1.2" https_gateway;"TLSv1.3" https_gateway;}server {listen 8080;ssl_preread on;proxy_pass $upstream;}upstream http_gateway_8081 {server 127.0.0.1:80811;}upstream https_gateway_4664 {server 127.0.0.1:80812;}map $ssl_preread_protocol $upstream_8081 {default http_gateway_8081;"TLSv1.0" https_gateway_8081;"TLSv1.1" https_gateway_8081;"TLSv1.2" https_gateway_8081;"TLSv1.3" https_gateway_8081;}server {listen 8081;ssl_preread on;proxy_pass $upstream_8081;}
}

3、简单的nginx.conf示例供参考

http {include       mime.types;default_type  application/octet-stream;sendfile        on;server {access_log logs/demo-info.log;listen 80801;listen 80802 ssl;server_name localhost;ssl_certificate      /usr/local/nginx/conf/ssl/server.crt;ssl_certificate_key  /usr/local/nginx/conf/ssl/server.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  10m;ssl_protocols  TLSv1.2;  ssl_prefer_server_ciphers  on;ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; location / {proxy_pass http://127.0.0.1:4399;}}server {access_log logs/demo-test.log;listen 80811;listen 80812 ssl;server_name localhost;ssl_certificate      /usr/local/nginx/conf/ssl/server.crt;ssl_certificate_key  /usr/local/nginx/conf/ssl/server.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  10m;ssl_protocols  TLSv1.2;  ssl_prefer_server_ciphers  on;ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;location / {proxy_pass http://127.0.0.1:4340;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git文件夹瘦身

git历史commit中可能包含一些build文件夹,想要删掉缩小git大小。主要参考: git: 如何减少.git文件的大小?_.git瘦身-CSDN博客 一、查看git中文件大小 # 查看.git中前十位大小的文件 (hash值, 大小Byte) …

使用llamafile 构建本地大模型运用

安装 https://github.com/Mozilla-Ocho/llamafile 下载 大模型文件,选择列表中任意一个 wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?downloadtrue https://github.com/Mozilla-Ocho/llamafile?tabre…

智慧农业领航:数字乡村助力乡村振兴与可持续发展

目录 一、引言 二、智慧农业的内涵与特点 三、数字乡村助力乡村振兴的路径 1、提升农业生产效率 2、优化农业产业结构 3、促进乡村社会治理现代化 三、智慧农业在可持续发展中的作用 1、促进资源节约与环境保护 2、提升农产品质量与食品安全 3、推动乡村经济多元化发…

蓝桥杯第十三届蓝桥杯大赛软件赛决赛CC++ 研究生组之交通信号

蓝桥杯第十三届蓝桥杯大赛软件赛决赛C/C 研究生组之交通信号 题目链接[0交通信号 - 蓝桥云课 (lanqiao.cn)] 本题的思路十分简单,先看题意,是由n个节点,m条边的有向图,红绿灯的顺序为绿黄红黄,在最开始时候为绿灯&am…

VOC(客户之声)赋能智能家居:打造个性化、交互式的未来生活体验

随着科技的飞速发展,智能家居已成为现代家庭不可或缺的一部分。然而,如何让智能家居更好地满足用户需求,提供更贴心、更智能的服务,一直是行业关注的焦点。在这个背景下,VOC(客户之声)作为一种用…

Redis入门到实战-第十七弹

Redis实战热身t-digest篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的(采用BSD许可证),用作数据库、缓存、消息代理…

【Java程序设计】【C00379】基于(JavaWeb)Springboot的旅游服务平台(有论文)

【C00379】基于(JavaWeb)Springboot的旅游服务平台(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发&#xff0c…

3.学习前后端关联

目录 1.接口类型 2.错误状态码 3.如何定义路由 4.那如何要求前端传入一个JSON数据呢? 4.解决前后端口不同源,跨域问题 1.使用CrossOrigin 2.直接复制代码使用 5.用户登录校验 1.接口类型 POST(新增数据)、PUT(更新更改数据)、GET(查询)、DELET(删除数据) …

Anaconda和Python是什么关系?

Anaconda和Python相当于是汽车和发动机的关系,你安装Anaconda后,就像买了一台车,无需你自己安装发动机和其他零配件,而Python作为发动机提供Anaconda工作所需的内核。 简单来说,Anaconda是一个集成了IDE、Notepad、P…

node项目中express的使用

01 expres项目的基础配置 第一步 需要先初始化项目 npm init -y第二步 安装express: npm i express;第三步 项目中创建app.js文件第四步 进行配置代码如下:var express require(express)var app express()配置路由app.get(/,(req,res)>{res.send(…

Linux初学(九)shell 脚本

一、shell 脚本编程 1.1 简介 shell脚本就是一个文件 在这个文件中包含了要批量自动执行的命令 写shell脚本的基本规范 第一步:用vi/vim创建一个后缀是.sh的文件 第二步:在文件中写入内容 第一行是:#!/bin/bash 指定程序的解释器从第二行开始…

网络层介绍,IP地址分类以及作用

IP地址组成: TTL:生存时间 基于ICMP报文 特殊地址: 0.0.0.0-0.255.255.255 1.代表未指定的地址 默认路由 DHCP下发地址的时候,发个报文给DHCP服务器 临时用0.0.0.0借用地址,未指定地址。 2.全网地址:目…

nginx 日志配置

access_log access_log用来记录客户端请求访问日志,可以出现在http,server,location,if块中。语法如下: access_log path [format [buffersize] [gzip[level]] [flushtime] [ifcondition]];path用来指定日志存放路径&#xff0c…

【pytorch】安装合集

使用conda或者pip安装的指令 https://pytorch.org/get-started/previous-versions/ 测试pytorch_gpu是否可用的代码 # 测试pytorch是否安装成功 import torch print(torch.__version__) print(torch.cuda.is_available())

阐述el-dropdown(下拉菜单)的基本知识

目录 1. 基本知识2. Demo3. 实战 1. 基本知识 el-dropdown是一个常用的UI组件,用于创建下拉菜单,通常用于实现各种交互式菜单、导航栏或下拉选项 确保安装Element UI库,它包含了el-dropdown组件 npm install element-ui # 或者 yarn add e…

配置Web运行环境与第一个网页

安装与配置Web环境: 如下使用了VSC作为web的运行环境。 下面是VSC的官网点击进入:Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/download 1.下载 进入官网后可以看到有windows,linux,还有苹果按照自己的系统下载&…

Node Sass does not yet support your current environment

项目运行时报错:Node Sass does not yet support your current environment 原因是node版本过高。 解决办法: 使用nvm管理node版本,(如何安装nvm?请点击跳转) 具体步骤如下: 1.查看当前node…

Element UI中日期选择日(date-picker)等其他选择器下拉显示错位、位置错误解决

省流版 给选择器加上唯一key(下面的想看就看) 问题复现 需求是用一个下拉切换时间维度的选择,分别为年度、季度、月度,但是开发的时候发现,当切换的时候,视图可正常切换,但点击选择时却发现选…

软考系统架构设计师(摘抄)01

架构师承担的责任 系统架构师设计师是承担系统架构设计的核心角色,他不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统开发早期阶段质量保证的关键角色。系统架构师就是项目的总设计师,他是一个既需要掌控整体又需要洞悉局部瓶颈&a…

Vue 2 组件发布到 npm 的常见问题解决

按照 Vue 2 组件打包并发布到 npm 的方法配置项目后,项目在实际开发过程中,随着代码写法的多样性增加而遇到的各种打包问题,本文将予以逐一解决: 本文目录 同时导出多个组件 样式表 import 问题解决 Json 文件 import 问题解决…