当前位置: 首页 > news >正文

Nginx — Nginx安装证书模块(配置HTTPS和TCPS)

一、安装和编译证书模块

[root@master nginx]# wget https://nginx.org/download/nginx-1.25.3.tar.gz
[root@master nginx]# tar -zxvf nginx-1.25.3.tar.gz
[root@master nginx]# cd nginx-1.25.3
[root@master nginx]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  --with-stream --with-stream_ssl_module
[root@master nginx]# make && make install


#查看编译是否成功
nginx -V

二、上传证书到指定的路径下

3.1、上传证书到/usr/local/nginx/conf/ssl目录下
#创建存放证书的路径方便管理 
mkdir -p /usr/local/nginx/conf/ssl

#上传证书

3.2、查看证书的详情
 openssl x509 -in /usr/local/nginx/conf/ssl/gateway.crt -text -noout

三、Nginx配置HTTPS和TCPS

(一)、HTTPS配置

4.1、HTTP配置
server {
    listen      8888;
    server_name  192.168.72.130;
    location / {
        root /opt/sumscope;
        }
}

4.2、HTTPS配置
#编辑server添加如下内容
server {
    listen      8888 ssl;
    ssl_certificate /usr/local/nginx/conf/ssl/gateway.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/gateway.key;
    server_name  192.168.72.130;
    location / {
        root /opt/sumscope;
        }
}

#执行reload
nginx -s reload

继续以HTTP访问出现400报错

因为配置了HTTPS通过HTTP访问就会报错,要想解决HTTP访问自动跳转到HTTPS,需要将HTTP请求重定向到HTTPS。

400报错原因:

当使用 Nginx 时遇到 400 错误(Bad Request),意味着客户端发送的请求存在问题,Nginx 无法理解该请求。下面为你详细分析可能的原因:

请求头相关问题
  • 请求头过长:如果客户端发送的请求头包含过多的信息,超过了 Nginx 配置中允许的最大请求头长度,Nginx 就会返回 400 错误。可以通过调整 http 块或 server 块中的 large_client_header_buffers 指令来解决,示例如下:
http {
    large_client_header_buffers 4 8k;
    ...
}

上述配置将最大请求头缓冲区数量设置为 4,每个缓冲区大小为 8KB。

  • 请求头格式错误:若请求头的格式不符合 HTTP 协议规范,例如缺少必要的字段、字段值格式错误或包含非法字符等,Nginx 会拒绝该请求。比如,请求头中的 Host 字段缺失或格式错误,就可能导致 400 错误。
  • 请求头编码问题:如果请求头使用了不支持的字符编码,Nginx 可能无法正确解析请求,从而返回 400 错误。
请求 URI 相关问题
  • URI 过长:当客户端发送的请求 URI 长度超过 Nginx 配置中允许的最大值时,会触发 400 错误。可以通过修改 http 块或 server 块中的 client_header_buffer_size 和 large_client_header_buffers 指令来调整最大 URI 长度。
  • URI 包含非法字符:请求 URI 中包含不允许的字符,如未经过正确编码的特殊字符,可能会导致 Nginx 无法解析请求。例如,在 URI 中直接使用空格而未进行编码,就会引发问题。
客户端或代理问题
  • 客户端软件故障:某些客户端软件(如浏览器、爬虫程序等)可能存在漏洞或配置错误,导致发送的请求不符合 HTTP 协议规范。例如,浏览器插件可能会修改请求头,从而引发 400 错误。
  • 代理服务器配置错误:如果使用了代理服务器,代理服务器的配置错误可能会影响请求的正常转发。例如,代理服务器可能会修改请求头或 URI,导致请求在到达 Nginx 时出现问题。
其他问题
  • SSL/TLS 握手问题:在使用 HTTPS 协议时,SSL/TLS 握手过程中出现错误,如客户端和服务器支持的 SSL/TLS 版本不兼容、加密算法不匹配等,可能会导致 Nginx 返回 400 错误。
  • 服务器过载:当服务器负载过高时,可能无法及时处理客户端的请求,从而返回 400 错误。可以通过优化服务器配置、增加硬件资源或使用负载均衡器来解决。

4.3、配置将HTTP请求重定向到HTTPS
#HTTPS配置
server {
    listen      443 ssl;
    ssl_certificate /usr/local/nginx/conf/ssl/gateway.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/gateway.key;
    server_name  192.168.72.130;
    location / {
        root /opt/sumscope;
        }
}


#将HTTP请求重定向到HTTPS
server {
    listen 80;
    server_name 192.168.72.130;
    return 301 https://$server_name$request_uri;
}

#执行reload
nginx -s reload

 

4.3.1、访问测试

浏览器输入:192.168.72.130 

跳转到如下页面

(二)、TCPS配置

分别配置没有证书(TCP)和有证书(TCPS)场景

#负载均衡场景1:配置证书
stream{
   upstream gateway{
        #hash $remote_addr consistent;
        server 192.168.72.130:2000;
        server 192.168.72.131:2000 backup;
   }
    server {
        listen   444 ssl;
        proxy_pass gateway;
        ssl_certificate /usr/local/nginx/conf/ssl/gateway.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/gateway.key;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
    }


   #负载均衡场景2:没有配置证书
   upstream stctcp{
        server 192.168.72.130:2000;
        server 192.168.72.131:2000 backup;
   }
    server {
        listen 9092;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass stctcp;
    }
}

http://www.dtcms.com/a/100054.html

相关文章:

  • J2EE框架技术 第九章 Spring缓存技术
  • C语言pthread库创建线程的案例
  • 前端程序员学习Python的极简入门
  • (undone) MIT6.824 Lecture 02 - RPC and Threads
  • Stable Diffusion LoRA模型训练:图片收集与处理完全攻略
  • 单节点的 OpenStack 一体化部署
  • CentOS8+Nginx环境使用Certbot+Let‘s Encrypt 配置免费ssl证书及自动续期
  • Windows Server2019搭建FTP服务器
  • iOS审核被拒:Missing privacy manifest 第三方库添加隐私声明文件
  • 5G_WiFi_CE_标称带宽/占用带宽
  • SALV无废话教程
  • Python小练习系列 Vol.11:回文数筛选(filter + 字符串反转)
  • AF3 nonensembled_transform_fns函数解读
  • AI日报 - 2025年03月31日
  • Qt WebSockets使用
  • 《非暴力沟通》第七章 “用全身心倾听” 总结
  • 算法每日一练 (23)
  • 深入理解 Windows 进程管理:taskkill 命令详解
  • 《电子武林争霸赛:MOSFET少侠 vs 三极管长老》
  • axios使用
  • 网络空间安全(44)Web实战篇
  • 硬件学习笔记--56 电击防护方式分类介绍
  • 目标检测中COCO评估指标中每个指标的具体含义说明:AP、AR
  • 基于YOLOv8的PCB缺陷检测--补充实验
  • [C++面试] 智能指针面试点(重点)续3
  • 【视觉提示学习】3.28阅读随想
  • 11. STL的使用
  • springBoot统一响应类型3.4版本
  • LlamaIndex实现(基于PDF|CSV文件)RAG检索增强生成:NaiveRAG
  • 量子计算:未来计算技术的革命性突破