【Nginx】Windows生成ssl证书,Nginx反向代理HTTPS

下载 OpenSSL

环境 Windows、Linux, 证书我是在Windows上生成的自签证书。

https://slproweb.com/products/Win32OpenSSL.htmlWin64 OpenSSL v3.3.1
EXE(这个) | MSI

Select Additional Tasks页面勾选 The OpenSSL binaries (/bin) directory

然后将OpenSSL的bin目录配置到path中

C:\Program Files\OpenSSL-Win64\bin;

创建自签证书

生成私钥文件

openssl genrsa -des3 -out codingce.com.cn.key 2048

去除口令,否则启动Nginx时需要密码

openssl rsa -in codingce.com.cn.key -out codingce.com.cn.key

创建请求证书

openssl req -new -key codingce.com.cn.key -out codingce.com.cn.csr

所填写内容示例

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CODINGCE
Organizational Unit Name (eg, section) []:DEV
Common Name (e.g. server FQDN or YOUR name) []:codingce.com.cn
Email Address []:root@codingce.com.cnPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:CODINGCE

生成证书

openssl x509 -req -days 36500 -in codingce.com.cn.csr -signkey codingce.com.cn.key  -out codingce.com.cn.crt -extfile codingce.com.cn.ext

codingce.com.cn.ext

basicConstraints = CA:FALSEkeyUsage = nonRepudiation, digitalSignature, keyEnciphermentsubjectAltName = @alt_names[alt_names]DNS.1 = codingce.com.cn

概念

代理

在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。

可能大家不太明白这句话,在举一个现实生活中的例子:比如我们要买一间二手房,虽然我们可以自己去找房源,但是这太花费时间精力了,而且房屋质量检测以及房屋过户等一系列手续也都得我们去办,再说现在这个社会,等我们找到房源,说不定房子都已经涨价了,那么怎么办呢?最简单快捷的方法就是找二手房中介公司(为什么?别人那里房源多啊),于是我们就委托中介公司来给我找合适的房子,以及后续的质量检测过户等操作,我们只需要选好自己想要的房子,然后交钱就行了。

代理简单来说,就是如果我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做。那么这个例子里面的中介公司就是给我们做代理服务的,我们委托中介公司帮我们找房子。

Nginx 主要能够代理如下几种协议,其中用到的最多的就是做Http代理服务器。

  • http/https(HTTP Server)
  • ICMP/POP/IMAP(Mail Server)
  • RTMP(Media Server)

正向代理

大家都知道,现在国内是访问不了 Google的,那么怎么才能访问 Google呢?我们又想,美国人不是能访问 Google吗(这不废话,Google就是美国的),如果我们电脑的对外公网 IP 地址能变成美国的 IP 地址,那不就可以访问 Google了。你很聪明,VPN 就是这样产生的。我们在访问 Google 时,先连上 VPN 服务器将我们的 IP 地址变成美国的 IP 地址,然后就可以顺利的访问了。

这里的 VPN 就是做正向代理的。正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端是要进行一些正向代理的设置的。

反向代理

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

Nginx反向代理

背景需求

我的环境是 A 内网机器不能访问公网,B 机器能访问公网,目的就是 A 机器通过 B 机器反向代理访问公网。

A 机器

通过修改 A 机器的HOST文件来模拟内网域名(codingce.com.cn)解析到 B 机器。

C:\Windows\System32\drivers\etc192.168.56.101  codingce.com.cn

B 机器

Nginx 版本:nginx-1.25.4

Nginx 配置 nginx.conf

#user  nobody;
worker_processes  1;events {worker_connections  1024;
}http {server_names_hash_bucket_size 64;include       mime.types;default_type  application/octet-stream;# 包含自定义配置文件include       vhost/*.conf;sendfile        on;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}}

Nginx 配置 codingce.conf
D:\nginx-1.25.4\nginx-1.25.4\conf\vhost

# codingce.com.cn
server {listen 443 ssl;server_name codingce.com.cn;ssl_certificate "D:\\Nginx\\nginx-1.25.4\\nginx-1.25.4\\conf\\vhost\\codingce.com.cn.crt";ssl_certificate_key "D:\\Nginx\\nginx-1.25.4\\nginx-1.25.4\\conf\\vhost\\codingce.com.cn.key";ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;location / {proxy_pass https://codingce.com.cn;proxy_ssl_verify off;proxy_ssl_server_name on;proxy_connect_timeout 120s;proxy_send_timeout 120s;proxy_read_timeout 120s;proxy_set_header Host codingce.com.cn;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

Linux版本

server {listen 443 ssl;server_name codingce.com.cn;ssl_certificate /path/to/codingce.com.cn.crt;ssl_certificate_key /path/to/codingce.com.cn.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;location / {proxy_pass https://codingce.com.cn;proxy_ssl_verify off;proxy_ssl_server_name on;proxy_connect_timeout 120s;proxy_send_timeout 120s;proxy_read_timeout 120s;proxy_set_header Host codingce.com.cn;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
# 启动 nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf# 重启
/usr/local/nginx/sbin/nginx -s reload

证书:

自签证书浏览器无法识别安全性,需要手动添加 受信任的根证书颁发机构,不然上线的时候会有证书无效问题。

A 机器 控制台访问

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

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

相关文章

一篇文章学完Python基础

1. 字符串 str1 "Hello" str2 " World" print(str1 str2) # 输出:HelloWorld 1.1 字符替换 text "Hello, World!" new_text text.replace("World", "Python") print(new_text) # 输出:…

2024第八届自然语言处理与信息检索国际会议 (NLPIR 2024)即将召开!

2024第八届自然语言处理与信息检索国际会议 (NLPIR 2024)将于2024年12月13-15日在日本冈山的冈山大学举行。NLPIR 2024将为自然语言处理与信息检索领域的专家学者提供一个交流与合作的平台,推动该领域的学术进步和技术创新。同时,本次会议也将为相关企业…

Golang 高性能 Websocket 库 gws 使用与设计(一)

前言 大家好这里是,白泽,这期分析一下 golang 开源高性能 websocket 库 gws。 视频讲解请关注📺B站:白泽talk 介绍 gws:https://github.com/lxzan/gws |GitHub 🌟 1.2k,高性能的 …

0724,select +tcp 聊天室喵

目录 TCP协议喵 723__01:使用select实现一个基于UDP的一对一即时聊天程序。 001: 002: TIMEWAI OR BUG 721作业: 01:在一对一聊天的基础上,使用select实现一对多的回显服务。(回显服务即接收到客户端发送的数…

Pyppeteer 的使用

puppeteer 是基于Node.js 开发的一个工具, 有了它,我们可以利用 JavaScript 控制 Chrome 浏览器的一些操作。当然, puppeteer 也可以用于网络爬虫,其 API 及其完善,功能非常强大。 Pyppeteer 其实是 puppeteer 的 python 实现&…

.net 连接达梦数据库开发环境部署

.net 开发环境部署 1. 环境准备 测试工具 Visual Studio2022 数据库版本 dm8 2. 搭建过程 1 )创建新项目 2 )选择创建空项目 3 )配置新项目 4 )右键 DM1 新建一个项 5 )加 载 驱 动 , 新 建 …

0722_驱动3 地址映射驱动点灯

一、为什么需要地址映射 在芯片手册上查看到的地址属于物理地址,在硬件层 在内核空间地址属于虚拟地址,在内核层 在驱动中,操作的是虚拟地址 需要将物理地址《--mmu内存管理单元--》虚拟地址映射 二、映射API接口 void *ioremap(unsigned lon…

backtrace

介绍 arm平台的调用栈与x86平台的调用栈大致相同,稍微有些区别,主要在于栈帧的压栈内容和传参方式不同。在arm平台的不同程序,采用的编译选项不同,程序运行期间的栈帧也会不同。有些工具在对arm的调用栈回溯时,可能会…

电商项目之如何判断线程池是否执行完所有任务

文章目录 1 问题背景2 前言3 4种常用的方法4 代码4.1 isTerminated()4.2 线程池的任务总数是否等于已执行的任务数4.3 CountDownLatch计数器4.4 CyclicBarrier计数器 1 问题背景 真实生产环境的电商项目,常使用线程池应用于执行大批量操作达到高性能的效果。应用场景…

Dify中语音和文字间转换问题的一种暂时注释方式

本文主要解释了Dify中语音和文字间转换可能会遇到的问题,并给出了一种暂时注释的解决方案。 一.文本转语音可能问题 本地部署文本转语音时,如果遇到如下问题,安装ffmpeg即可。但是如果安装后,重启系统还是遇到这个问题该如何办&…

分库分表——从理论到最佳实践

目录 1、为什么要分库分表?2、切分方案有哪些?2.1 分库2.1.1 垂直分库2.1.2 水平分库 2.2 分表2.2.1 垂直分表2.2.2 水平分表 2.3 分库分表 3、数据水平分片方法3.1 Hash分片3.2 一致性Hash分片3.3 Range分片 4、分库分表的挑战4.1 分布式id4.2 分布式事…

LLM:归一化 总结

一、Batch Normalization 原理 Batch Normalization 是一种用于加速神经网络训练并提高稳定性的技术。它通过在每一层网络的激活值上进行归一化处理,使得每一层的输入分布更加稳定,从而加速训练过程,并且减轻了对参数初始化的依赖。 公式 …

分类模型——逻辑回归和Fisher线性判别分析

个人学习笔记,课程为数学建模清风付费课程 目录 一、引例 二、逻辑回归 2.1线性概率模型 2.2Fisher线性判别分析 2.3两点分布(伯努利分布) 2.4连接函数的取法 2.5如何求解 2.6如何用于分类 三、SPSS 3.1二元分类 3.1.1逻辑回…

MySQL内如何改变编码格式

查找数据库的编码格式&#xff1a; show variables like character%;具体内容时这些 在创建表时设定编码格式&#xff1a; create database <要创建的数据库的名字> charset utf8; 修改数据库默认编码&#xff1a; set character_set_databaseutf8mb4; character_…

eclipse ui bug

eclipse ui bug界面缺陷&#xff0c;可能项目过多&#xff0c;特别maven项目过多&#xff0c;下载&#xff0c;自动编译&#xff0c;加载更新界面异常 所有窗口死活Restore不回去了 1&#xff09;尝试创建项目&#xff0c;还原界面&#xff0c;失败 2&#xff09;关闭所有窗口&…

将TP5链接导入笔影个人博客代码

首先第一步&#xff0c;打开界面 第二步&#xff0c;这里卡住了&#xff0c;无法看到源代码&#xff0c;我们使用其他软件看看源代码 调试乱码&#xff0c;因为没有找到相应的笔影个人博客源码。源码在桌面上。询问百度&#xff0c;说了有的没的一大堆。 尝试的结果就是失败…

时间复杂度与O(n)

文章目录 1 复杂度分析1.1 时间复杂度1.1.1 循环执行次数1.1.2 大O(n)表示法 1.2 空间复杂度 1 复杂度分析 1.1 时间复杂度 ​ 时间复杂度用来表示算法运行时间的长短&#xff0c;用来定性的描述程序的运行时间。要了解时间复杂度&#xff0c;我们需要先了解程序执行的次数。…

机器学习(二十二):精度和召回率

一、倾斜数据集 倾斜数据集&#xff1a;一个数据集中的正面和负面例子的比例非常不平衡&#xff0c;比如数据集中&#xff0c;结果为1的占比20%&#xff0c;结果为0的占比80% 例子&#xff1a;如果数据集的结果中只有0.5%是1&#xff0c;其余结果是0。有一个模型的预测准确度…

【信创】udisk2服务异常导致U盘使用中自动移除问题解决

原文链接&#xff1a;【信创】udisk2服务异常导致U盘使用中自动移除问题解决 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在信创终端操作系统上由于udisk2服务异常导致U盘等移动设备在使用中自动移除问题的排查文章。udisk2是一个管理存储设备的服务&#xf…

【计算机网络】OSPF单区域实验

一&#xff1a;实验目的 1&#xff1a;掌握在路由器上配置OSPF单区域。 2&#xff1a;学习OSPF协议的原理&#xff0c;及其网络拓扑结构改变后的变化。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS交换机、网线、内网网卡接口、Windows 2019操作系统的计算机等。…