没有外网Nginx如何配置如何开启https

判断是否支持open-ssl

在服务器执行如下命令

openssl version

没有则安装open-ssl,由于服务器没有外网,可以离线安装openssl-3.0.1.tar.gz,我是在有网的服务器直接下载的,然后再上传到这台无网的服务器上

wget https://www.openssl.org/source/openssl-3.0.1.tar.gz

在服务器上创建一个目录,然后把包上传到该目录下

 mkdir /usr/local/sslcd /usr/local/ssl# 解压tar -xf openssl-3.0.1.tar.gz# 设置SSL库文件路径./config --prefix=/usr/local/ssl/makemake install

如果一切顺利,在执行openssl version 会看到open-ssl版本,但是我这里出现了一个小插曲,我在安装完然后执行的时候报错没好用,分析报错原因,我这原来不知道谁建立了一个目录ssl目录,导致我设置的SSL库文件路径没有生效,报错信息如下

openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory

网上搜索是说ssl 库文件路径没有生效

vi /etc/ld.so.conf
# 重新设置一下 /usr/local/ssl/ 路径
sudo ldconfig 

生成SSL证书

# 第一步:生成私钥
mkdir /etc/ssl/certs/www.bbcc.com
openssl genrsa -des3 -out server.key 2048
# 输入一个4位以上的密码
# 确认密码
#第二步:生成CSR(证书签名请求)
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=JiLin/L=ChangChun/O=gsafety/OU=gsafety/CN=www.bbcc.com"
#第三步:去除私钥中的密码
#在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次启动Web服务器时,都会要求输入密码
#这显然非常不方便。要删除私钥中的密码,操作如下:
openssl rsa -in server.key -out server.key
#第四步:生成自签名SSL证书
# -days 证书有效期-天
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

Nginx 配置支持SSL

查看Nginx已经安装那些模块,这里是不需要网的

cd /usr/local/nginx/sbin
./nginx -V
# 信息如下
nginx version: nginx/1.22.0
built by gcc 7.3.0 (GCC) 
built with OpenSSL 1.1.1k  25 Mar 2021 (running with OpenSSL 1.1.1d  10 Sep 2019)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre --with-http_gzip_static_module

如果不支持ssl 模块需要升级一下nginx ,切换到nginx 之前编译的目录,就是执行make之前的目录,因为我们要重新编译,在把编译好的拷贝到现在正在使用的目录中,原理大概就是这个意思
解压目录:/usr/local/nginx/nginx-1.22.0
编译后目录:/usr/local/nginx

 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre --with-http_gzip_static_module --with-stream --with-stream_ssl_preread_module

升级重新编译

 make upgrade

把原来正在使用的nginx 执行文件备份一下

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

把编译好的nginx 拷贝过去

cp /usr/local/nginx-1.13.3/objs/nginx /usr/local/nginx/sbin/

在查看一下nginx 的版本信息已经有了ssl 模块支持了

nginx 修改配置,配置证书

写下原理在这吧,因为每个人的情况不近相同,但是我们要做的大概是一样的

  1. 项目已经上线了所以不能修改原来页面的访问,只是增加https支持,原来的人还是可以访问http的,所以这是双协议支持
  2. 监听原来的端口,判断是https 还是http ,http 转发到原来的路由server上,如果是https 转发到我们新的端口上
  3. 但是https 的只是增加了证书验证环节,最后还是转发到原来的server 上
  4. 所以我们有俩个server 模块 一个是ssl 一个不是
    在这里插入图片描述
    我把俩段比较重要的配置放在下面,做个参考。
stream {upstream http_protocol {# 8991端口是一个开启http的端口server 127.0.0.1:8992;}upstream https_protocol {# 10002端口是一个开启https的端口server 127.0.0.1:10002;}# 根据不同的协议走不同的upstreammap $ssl_preread_protocol $upstream {default http_protocol;"TLSv1.0" https_protocol;"TLSv1.1" https_protocol;"TLSv1.2" https_protocol;"TLSv1.3" https_protocol;}server {listen 8990;ssl_preread on;proxy_pass $upstream;}
}
  server {listen 10002 ssl;server_name www.gsafety.com;ssl_certificate /etc/ssl/certs/www.gsafety.com/server.crt;ssl_certificate_key /etc/ssl/certs/www.gsafety.com/server.key;#减少点击劫持#add_header X-Frame-Options DENY;add_header X-Frame-Options AllowAll;#禁止服务器自动解析资源类型add_header X-Content-Type-Options nosniff;#防XSS攻击add_header X-Xss-Protection 1;#优先采取服务器算法ssl_prefer_server_ciphers on;#协议ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;location / {proxy_pass http://127.0.0.1:8991/;}}

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

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

相关文章

React实现组件扩展机制

在java中,SPI机制是Java中提供的一种服务发现机制。同样,前端也很需要这种机制,这样可以做到组件可插拔,可替换,减少相互冗余。 快速使用 1.扩展点使用 通过使用Extension组件定义扩展点,通过name标记扩展…

Facebook的创新征程:社交媒体的演进之路

在当今数字化时代,社交媒体已经成为人们生活中不可或缺的一部分,而Facebook作为社交媒体领域的巨头,一直在不断创新和演进。本文将深入探讨Facebook的创新征程,追溯其社交媒体的发展历程,探讨其对用户、社会和数字时代…

巨人踏步,港口自动驾驶提速向前打开行业新空间

按照吞吐量排名,全世界最大的50个港口,中国占了29个。在中国的港口和码头上,一场进化正在发生:人在这个生态中占的比重越来越少,技术接管的要素正在越来越多。像是最具代表性的全球综合自动化程度最高的码头——上海洋…

12nm工艺,2.5GHz频率,低功耗Cortex-A72处理器培训

“ 12nm工艺,2.5GHz频率,低功耗Cortex-A72处理器培训” 本项目是真实项目实战培训,低功耗UPF设计,后端参数如下: 工艺:12nm 频率:2.5GHz 资源:2000_0000 instances 为了满足更多…

k8s二进制及负载均衡集群部署详解

目录 常见部署方式 二进制部署流程 环境准备 操作系统初始化配置 关闭防火墙 配置SELinux 关闭SWAP 根据规划设置主机名 在master添加hosts,便于主机名解析 调整内核参数 配置时间同步 部署docker引擎 在所有node节点部署docker引擎 部署etcd集群 签发…

Sentinel 知识总结

Sentinel 知识总结 Sentinel 是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略,包括QPS限流、并发数限流、线程池限流等,并且支持集群限流。此外,Sentinel还提供了熔断降级、系…

51单片机编程应用(C语言):数码管

目录 1.数码管原理 一位数码管引脚定义: 四位一体数码管: 多个数码管同时显示不同数字 51单片机的数码管的原理图 51单片机实现静态显示和动态显示 静态显示: 动态显示: 1.数码管原理 一位数码管引脚定义: 数码…

Git版本管理工具(实战进阶):零基础到起飞实战项目完整篇 →Git学习一篇就够 从基本指令、到本地仓库、远程仓库、实战项目开发演练介绍超详细!

heima 李师傅最新版 Git的讲解 文章目录 Git在实战项目开发使用功能学习01.Git 初识02.Git 仓库03.Git 的三个区域04.Git 文件状态05.Git 暂存区作用06.练习-登录页面07.Git-切换版本08.删除文件09.忽略文件10.分支的概念11.练习-登录 bug 修复12.分支-合并与删除13.分支-合并与…

测试ASP.NET Core项目调用EasyCaching的基本用法(Redis)

EasyCaching中的包EasyCaching.Redis和EasyCaching.CSRedis都支持集成Redis实现缓存,前者基于StackExchange.Redis,而后者基于CSRedisCore,本文学习使用EasyCaching.Redis包连接redis服务实现缓存的基本用法。   新建WebApi项目&#xff0c…

github请求超时解决方法

github请求超时解决办法 我使用windows执行如下git命令,提示超时 git clone xxxxx命令行提示如下: Failed to connect to github.com port 443: Timed out问题排查 可我Chrome可以正常访问github甚至ChatGPT,但是为什么在命令行里面却无法访问&#…

云上自动部署丨使用 Terraform 在 AWS 上搭建 DolphinDB

HashiCorp Terraform 是一款基础架构即代码工具,旨在实现 "Write, Plan, and Create Infrastructure as Code"。它通过配置文件来描述云资源的拓扑结构,包括虚拟机、存储账户和网络接口。Terraform 几乎支持市面上所有的云服务,能够…

光学3D表面轮廓仪服务超精密抛光技术发展

随着技术的不断进步,精密制造领域对材料表面的处理要求越来越高,超精密抛光技术作为当下表面处理的尖端技术,对各种高精密产品的生产起到了至关重要的作用,已广泛应用于集成电路制造、医疗器械、航空航天、3C电子、汽车、精密模具…

面试经典 150 题 -- 滑动窗口 (总结)

面试经典150题链接 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 209 . 长度最小的子数组 思路 : 滑动窗口的思想,取ij0,向后遍历j,记录前缀和[l,r]为s,如果s>target,那么左端点向右移动,直到s…

2022 年全国职业院校技能大赛高职组云计算赛项试卷

【赛程名称】云计算赛项第二场-容器云 说明: 完成本任务需要两台安装了 CentOS7.9 操作系统的云主机: master 和 node。Chinaskill_Cloud_PaaS.iso 镜像包中有本次容器云部署所需的所有文件,运维所需的文件见附件。 某公司技术部产品开发上线…

HTML+CSS+JS的3D进度条

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTMLCSSJS的3D进度条</title><style>…

JavaWeb前端——HTML/CSS

HTML/CSS概述 HTML&#xff1a;学习标签&#xff0c;CSS&#xff1a;学习样式 HTML 1. 不区分大小写。 2. 属性可以使用单引号/双引号 3. 在记事本/编辑器中编写html语言&#xff0c;通过浏览器解析渲染语言 4. 语法结构松散&#xff08;编写时要尽量严谨&#xff09; VSc…

Tensorflow2.0笔记 - tensor的padding和tile

本笔记记录tensor的填充和tile操作&#xff0c;对应tf.pad和tf.tile import tensorflow as tf import numpy as nptf.__version__#pad做填充 # tf.pad( tensor,paddings, modeCONSTANT,nameNone) #1维tensor填充 tensor tf.random.uniform([5], maxval10, dtypetf.int32) pri…

【Uni-App】运行微信小程序时报错routeDone with a webviewId 2 that is not the current page

使用HBuilderX开发微信小程序&#xff0c;运行项目的时有可能会出现routeDone with a webviewId 1 that is not the current page的报错&#xff0c;但不影响运行。如果强迫症介意的话&#xff0c;可以考下面的方法进行修复。 产生原因 由于微信开发者工具的调试基础库处于灰度…

【靶场实战】Pikachu靶场XSS跨站脚本关卡详解

Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Nx02 XSS跨站脚本概述 Cross-Site Scripting 简称为“CSS”&#xff…

SG2520CAA汽车用晶体振荡器

爱普生SG2520CAA是简单的封装晶体振荡器&#xff08;SPXO&#xff09;&#xff0c;具有CMOS输出&#xff0c;这款SPXO是汽车和高可靠性应用的理想选择&#xff0c;符合AEC-Q200标准&#xff0c;功耗低&#xff0c;工作电压范围为1.8 V ~ 3.3 V类型&#xff0c;宽工作温度-40℃~…