锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 网络与通信
  3. Nginx 配置 SSL(HTTPS)详解

Nginx 配置 SSL(HTTPS)详解

0
  • 网络与通信
  • 发布于 2024-09-28
  • 12 次阅读
黄健
黄健

Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。

随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。

使用Nginx进行反向代理的时候,对于正常的http;流量使用 location 块并且配置 proxy_pass 转发即可,但是如果是https的流量,使用Nginx进行反向代理的时候,直接使用 proxy_pass 会出现各种报错的情况,包括不限于:

  • 502 Bad Getway
  • ERR_SSL_PROTOCOL_ERROR
  • ERR_CONNECTION_RESET

我本身遇到的ERR_SSL_PROTOCOL_ERROR错误比较多,这是因为在配置Nginx的时候,对于443端口本身的侦听没有带上 ssl 关键字,所以会报SSL协议错误,但是如果加上ssl,没有给证书位置,也是不行


对于转发到8080端口,如果配置不对(比如后端服务是http,结果配置了https),会出现502 Bad Getway

  • proxy_pass后边的要写IP地址,不能写域名,否则还要解决域名解析的问题,有据称如果写localhost的,访问速度会变慢,是因为需要访问host文件解析localhost
  • 响应8080端口的server块,也要注意,也要写成侦听ssl,配置好证书位置
upstream  plan-uat {
        server 10.202.159.74:8080 max_fails=3 fail_timeout=10 weight=1;
}

server {
        server_name   plan-uat.ztoky.cn;
        listen 443 ssl ;
        ssl_certificate ssl/ztoky.cn.crt;
        ssl_certificate_key ssl/ztoky.cn.key;
        access_log logs/plan-uat.ztoky.cn.access.log json;

        location /plan/ {
           proxy_pass      http://plan-uat/;
           include         proxy.conf;
        }
}

检查 linux 服务器上的 nginx 是否安装 ssl 模块
nginx 安装目录,下面有个 sbin 文件夹,来到 sbin 目录下执行 ./nginx -V命令,注意是大写的 V,小写的 v 只会展示 nginx 的版本号信息。执行完出现下图圈红的这些信息说明 ssl 模块已经安装过了。可以忽略下文的 ssl 模块安装的相关内容,直接看 nginx 配置的内容。

cd /usr/local/nginx/sbin
./nginx -V

为 nginx 安装 ssl 模块
如果没有安装 ssl 模块,即使你成功的配置好 https 的相关配置,网站也依旧不能使用 https,会提示诸如:无法提供安全连接、TLS协议不支持等问题。ssl 模块的安装是为了能让后端接口得以使用 https 的方式调用。找到我们的 nginx 安装解压包,我这里是放在 /usr/local/software 目录下,然后执行如下命令进入到 nginx-1.18.0 目录下。

cd /usr/local/nginx-1.18.0

来到 ngixn-1.18.0 目录 然后依次执行如下这命令,配置了 ssl 模块,使用 make 命令重新编译

./configure --with-http_ssl_module
make

进入 objs 目录,会看到 nginx 的可执行文件

注意,不能使用 make install 命令,这样会导致重新安装 nginx,此时当前目录就会出现 objs 目录

替换 nginx 可执行文件,我们使用这个新的 nginx 可执行文件 替换 sbin 目录下的 nginx 可执行文件

cp ./nginx /usr/local/nginx/sbin/

系统会询问你是否覆盖,输入 y 即可,如果覆盖失败,多半是因为你的 nginx 还在启动中,先将 nginx 关闭即可,再次检验是否安装 ssl 模块,进入 nginx 目录

cd /usr/local/nginx/sbin/

执行命令

./nginx -V

此时就能看到 ssl 模块已经安装成功了



准备SSL证书


首先,我们需要准备SSL证书。你可以选择从证书颁发机构(CA)购买商业证书,也可以自己生成自签名证书。自签名证书虽然免费,但不会被浏览器信任,仅适用于测试环境。

如果你选择购买商业证书,通常会获得以下文件:

  • 证书文件(例如:example.com.crt)
  • 私钥文件(例如:example.com.key)
  • 中间证书文件(如果有的话)



配置Nginx SSL 启用443端口


(1) 打开Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。

(2) 在http块中,配置SSL相关参数。示例如下:

http {
    ...

    server {
        listen 443 ssl;
        server_name example.com;

        ssl_certificate /path/to/example.com.crt;  # 证书文件路径
        ssl_certificate_key /path/to/example.com.key;  # 私钥文件路径

        # 如果有中间证书,也需要配置
        ssl_trusted_certificate /path/to/intermediate.crt;

        # 其他SSL配置参数
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_protocols TLSv1.2 TLSv1.3;  # 支持的协议版本
        ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;  # 使用此加密套件
        ssl_prefer_server_ciphers on;  # 优先使用服务器端的加密套件

        # 其他server配置...
    }

    ...
}
测试HTTPS访问

现在,你的Nginx服务器已经配置了SSL,可以通过HTTPS协议访问了。在浏览器中输入https://example.com,检查是否能够成功访问并显示安全的连接标识(如绿色锁头)。

此外,你还可以使用命令行工具(如openssl或curl)来测试HTTPS连接和证书的有效性。


配置代理


使用proxy_pass指令来配置代理。以下是一个示例配置,将HTTPS请求代理到另一个HTTPS服务器:(注意这里的后端是HTTPS的服务)

后端服务是https类型的 proxy_pass https://your.backend.server;

后端服务是http类型的 proxy_pass http://your.backend.server;

server {

  # 监听443端口,处理所有HTTPS请求
  listen 443 ssl;

  server_name your.domain.com;

  # SSL配置 
  ssl_certificate /path/to/your/cert.pem;
  ssl_certificate_key /path/to/your/private.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!MD5;

  # 代理配置,将HTTPS请求代理到另一个HTTPS服务器
  location / {
    proxy_pass https://your.backend.server;
  }
}

以上配置假设您的域名是your.domain.com,代理目标是您的后端HTTPS服务器(例如https://your.backend.server)。请记住将路径和参数适当地配置为您的特定场景。

原文链接: https://blog.csdn.net/qq_34556414/article/details/138190241

标签: #网络与通信 23 #nginx 9
相关文章

不懂组网方案、网络平面、网络架构?看这一篇就够了 2024-11-02 15:33

点击上方蓝色字体关注,知识分享 0 1 前言 大家好,云智能知识分享,不懂组网方案、网络平面、网络架构?看这一篇就够了,下面我们一起来看下有哪些知识点! 0 2 正文 组网方案 为了提升网络的安全性,使业务接口的流量负载均衡,NCE把网络划分为多个相互隔离的网络平面,分别为硬件管理网络、客户端/北向

光纤的跳线、尾纤区别在哪? 2024-11-02 15:33

跳线和尾纤是光纤通信系统中常见的两种连接组件,它们在结构、用途和应用场景上有所不同。 主要区别 | 特性 | 跳线 | 尾纤 | |———–|————————–|—————————| | 定义 | 一段带有两端连接器的光纤线缆,用于设备间连接 | 一段只有一端带有连接器的光纤线缆,另一端裸露光纤 |

如何确定光纤用几芯?用光纤与网线区别在哪里?

如何确定光纤用几芯?用光纤与网线区别在哪里? 2024-10-26 08:43

不少朋友在做光纤项目时,都有一个疑问,光纤需要用几芯的? 本期我们一起来总结下。 01 光纤用几芯? 光纤芯数,主要和光纤连接的设备接口和设备的通信方式有关。一般来说,光纤中光芯的数量,为设备接口总数乘以2后,再加上10%~20%的备用数量,而如果设备的通信方式有设备多路复用,就能减少芯数。 按照I

智能化弱电工程界面划分表,17个系统,很详细

智能化弱电工程界面划分表,17个系统,很详细 2024-10-21 09:07

弱电系统有哪些 ,如何进行划分界面呢?这个经常有项目经理不是很清楚,常见的弱电系统有17个,我们本期一起来看下,如何对弱电系统划分施工。 弱电智能化工程界面划分表 比较详细,包括弱电大部分的系统,适用于弱电大部分项目。 此图下载版本已上传知识星球,星球资料不断更新,若要下载相关弱电精品资料的,可以扫

这是一款网络工程师电脑必装的软件:SecureCRT,从零安装到精通,看本文足够了! 2024-09-30 16:47

你好,这里是网络技术联盟站,我是瑞哥。 SecureCRT 是一款广泛使用的终端仿真程序,由 VanDyke Software 公司开发。它旨在为网络管理员、工程师和开发人员提供安全、可靠的终端仿真和文件传输功能。SecureCRT 支持多种协议,包括 SSH、Telnet、Serial、RLogi

【机房-网络设备运维常识总结(2024-8-2更新)】 2024-09-30 16:47

机房-网络设备运维常识总结 一、服务器构造 二、服务器组件拆装 三、网络设备及耗材介绍 四、使用Xshell进行交换机管理 五、通过服务器进入BIOS进行基础配置 一、服务器构造 1、服务器高度:1U=4.445cm,常见服务器高度为1U、2U。 2、服务器前面板:指示灯(健康灯、UID灯)、电源按

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.