没有外网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/ssl
 cd /usr/local/ssl
 # 解压
 tar -xf openssl-3.0.1.tar.gz
 # 设置SSL库文件路径
 ./config --prefix=/usr/local/ssl/
 make
 make 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;
    }
    # 根据不同的协议走不同的upstream
    map $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/;
        }
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HttpClient的使用与封装

HttpClient的使用与封装 配置 首先,我们要引入maven依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>这里可以单独引入,如果我…

linux操作系统网络编程套接字(实现一个udp通讯demo)

文章目录 理解源IP地址和目的IP地址认识端口号理解 "端口号" 和 "进程ID理解源端口号和目的端口号 认识TCP协议认识UDP协议什么是面向字节流和面向数据报流以及有无连接是什么意思 网络字节序socket编程接口socket 常见APIsockaddr结构sockaddr_in 结构in_addr结…

下载大文件时内存溢出情况分析解决

基于SpringBoot和阿里的OSS实现了一个下载文件的功能。 大概原理是这样的&#xff1a; 用户请求下载资源&#xff0c;服务端接收到请求之后从OSS中将用户需要的资源捞出来&#xff0c;然后以流的方式写给客户端。 遇到一个这样的问题&#xff1a; 下载小文件没有问题&#…

【C语言刷题系列】水仙花数的打印及进阶

1.水仙花数问题 水仙花数&#xff08;Narcissistic number&#xff09;也被称为超完全数字不变数&#xff08;pluperfect digital invariant, PPDI&#xff09;、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数&#xff08;Armstrong number&#xff09; 水仙花数是指一个 3 位数&a…

去中心化人工智能迸发应用潜力,或给 Web3 带来无限畅想

​ 原文&#xff1a;https://www.caseycaruso.com/thoughts/decentralized-ai 作者&#xff1a;Casey&#xff5c;Paradigm 投资合伙人 编译&#xff1a;TinTinLand 编者注&#xff1a;本文对于去中心化 Web3 技术和人工智能领域之间的交叉应用进行了梳理&#xff0c;并列举了…

springboot130社团管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

什么是框架 确定伦敦金的框架为何重要?

在伦敦金投资中&#xff0c;我们要进行分析或者交易&#xff0c;都要将伦敦金走势置于一个框架内。什么才是框架呢&#xff1f;笔者认为&#xff0c;在当前伦敦金走势的上方和下方画出支撑阻力位&#xff0c;这就是框架。但我们要注意框架得能够立得起来&#xff0c;那才算是好…

理顺 QR 分解算法

咱们网站的这个公式编辑器&#xff0c;估计是后台生成图片后贴回来的&#xff0c;固定分辨率而且分辨率不高。 还不如先离线 latex 生成 pdf 后再截图上来 1. Why QR When A and b are known, to solver the minimization of , where . The reduction of A to various canoni…

Spring5学习笔记

Spring5 框架概述IOC(Inversion Of Control)IOC基本过程:IOC接口(BeanFactory)IOC接口实现类IOC操作Bean管理一、什么是Bean管理?二、什么是DI?三、Bean管理的两种实现方式1.基于XML配置文件方式实现基于XML方式创建对象基于XML方式注入属性常规属性注入特殊属性值的注入…

文本检索性能提升 40 倍,Apache Doris 倒排索引深度解读

在 OLAP 领域&#xff0c;Apache Doris 已成为高性能、高并发以及高时效性的代名词。在面向海量数据的复杂查询需求时&#xff0c;除硬件配置、集群规模、网络带宽等因素外&#xff0c;提升性能的核心在于如何最大程度地降低 SQL 执行时的 CPU、内存和 IO 开销&#xff0c;而这…

记 Rxjava zip操作符遇到的问题

在项目中遇到了类似下面这样的代码 本意是希望当zip操作符中三个Observable执行完毕之后&#xff0c;将他们返回的数据统一进行处理 Observable.zip(startFirst(), startSecond(), startThird(),(first, second, third) -> {Log.i("Rxjava", "handle all dat…

外包干了一个月,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

基于springboot+vue旅游网站

摘要 旅游网站的开发是一个综合性的项目&#xff0c;涉及到前端和后端的技术&#xff0c;而基于Spring Boot和Vue.js的组合是一种常见的选择&#xff0c;因为它们可以很好地配合&#xff0c;提供高效且现代化的开发体验。首先&#xff0c;我们使用Spring Boot作为后端框架。Spr…

编码神仙插件Machinet AI GPT-4 Chat and Unit Tests

最近发现一个神仙插件Machinet AI GPT-4 Chat and Unit Tests&#xff0c;支持多个编译器安装使用。 我下载安装到Android Studio上&#xff0c;不需要登录直接可以使用。 可以直接提问&#xff0c;支持中文。

Ansible自动化运维(三)Playbook 模式详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

H.264与H.265的主要差异

H.265仍然采用混合编解码&#xff0c;编解码结构域H.264基本一致&#xff0c; H.265与H.264的主要不同 编码块划分结构&#xff1a;采用CU (CodingUnit)、PU(PredictionUnit)和TU(TransformUnit)的递归结构。 并行工具&#xff1a;增加了Tile以及WPP等并行工具集以提高编码速…

【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)

目录 一、二叉树剩余函数1.1二叉树的层序遍历1.2判断二叉树是否为完全二叉树1.3二叉树销毁 二、二叉树的构建及遍历OJ题 一、二叉树剩余函数 1.1二叉树的层序遍历 层序遍历&#xff1a; 除了先序遍历、中序遍历、后序遍历外&#xff0c;还可以对二叉树进行层序遍历。设二叉树…

GoZero微服务个人探究之路(九)api文件编写总结

参考来源go-zero官方文档https://go-zero.dev/docs/tutorials 前言 go-zero是目前star最多的go语言微服务框架&#xff0c;api 是 go-zero特殊的语言&#xff0c;类型文件&#xff0c;go-zero自带的goctl可以通过.api文件生成http服务代码 api文件内容编写 不可使用关键字 …

webug存在的越权漏洞-水平越权以及垂直越权的漏洞复现(超详解)

越权漏洞-webug、 1.登录 账号&#xff1a;admin 密码&#xff1a;admin 2.进入逻辑漏洞 3.进入越权修改密码靶场 &#xff08;1&#xff09;输入账号密码 进入进去会发现没有权限进入 方法一&#xff1a; 这里我们只需要将 127.0.0.1:8080/control/a/auth_cross/cross_a…

小迪安全23WEB 攻防-Python 考点CTF 与 CMS-SSTI 模版注入PYC 反编译

#知识点&#xff1a; 1、PYC 文件反编译 2、Python-Web-SSTI 3、SSTI 模版注入利用分析 各语言的SSIT漏洞情况&#xff1a; SSIT漏洞过程&#xff1a; https://xz.aliyun.com/t/12181?page1&time__1311n4fxni0Qnr0%3DD%2FD0Dx2BmDkfDCDgmrYgBxYwD&alichlgrefhtt…