配置 Nginx 以支持 HTTPS

embedded/2025/2/19 14:34:06/

1. 安装 Nginx

如果你尚未安装 Nginx,请先安装:

Ubuntu/Debian

sudo apt update
sudo apt install nginx -y

CentOS/RHEL

sudo yum install nginx -y

启动 Nginx:

sudo systemctl enable nginx --now

2. 配置 Nginx 以支持 HTTPS

(1)创建 Nginx 站点配置

Nginx 默认的站点配置通常在 /etc/nginx/sites-available/default(Ubuntu/Debian)或 /etc/nginx/nginx.conf(CentOS)中。

编辑配置文件:

sudo nano /etc/nginx/sites-available/default

或者:

sudo nano /etc/nginx/nginx.conf

添加或修改如下配置:

server {
    listen 80;
    server_name your_domain_or_ip;

    # 进行 HTTP 自动重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain_or_ip;

    # SSL 证书文件路径(需要根据你的情况修改)
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/html/dist;  # dist 目录的路径
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
 

3. 生成 SSL 证书

(1)使用 Let's Encrypt(推荐)

如果你有域名,可以使用 Let's Encrypt 免费证书:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain

成功后,Let's Encrypt 会自动配置 Nginx,并启用 HTTPS。

(2)使用自签名 SSL 证书(测试用)

如果你没有域名或仅用于本地测试,可以使用自签名证书:

sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
    -keyout /etc/nginx/ssl/nginx.key \
    -out /etc/nginx/ssl/nginx.crt \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=localhost"

解释:

  • -days 365:证书有效期 365 天(可以修改)。
  • -newkey rsa:2048:生成 2048 位 RSA 密钥。
  • -subj:证书的主题信息,CN=localhost 指定主机名(你可以改成服务器 IP)。

sudo vim /etc/nginx/nginx.conf

server {
    listen 80;
    server_name _;

    # 所有 HTTP 请求跳转到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name _;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    # 强制使用 TLS 1.2 或更高版本
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # 启用 HSTS(HTTP Strict Transport Security)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # 目录路径
    root /var/www/html/dist;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
 

然后,重新加载 Nginx 配置:

sudo systemctl restart nginx

4. 测试 HTTPS

如果使用了 Let's Encrypt,在浏览器访问:

https://your_domain

如果使用了自签名证书,访问时可能会有安全警告,手动信任即可。

5.(可选)强制 HTTPS 及安全优化

为了强制所有流量使用 HTTPS,可以修改 server 配置:

server {
    listen 80;
    server_name your_domain_or_ip;
    return 301 https://$host$request_uri;
}

然后,重启 Nginx:

sudo systemctl restart nginx


http://www.ppmy.cn/embedded/162555.html

相关文章

小鹏自动驾驶 xnet 技术细节

小鹏汽车的XNet技术是其自动驾驶系统XPILOT的核心感知架构之一,主要应用于XPILOT 4.0及更高版本。XNet的设计目标是实现更高效的多传感器融合、动态环境建模以及实时决策能力。以下是XNet技术的关键细节和特点: 1. 多传感器融合与数据统一 多模态输入&am…

在软件产品从开发到上线过程中,不同阶段可能出现哪些问题,导致软件最终出现线上bug

在软件产品从开发到上线的全生命周期中,不同阶段都可能因流程漏洞、技术疏忽或人为因素导致线上问题。以下是各阶段常见问题及典型案例: 1. 需求分析与设计阶段 问题根源:业务逻辑不清晰或设计缺陷 典型问题: 需求文档模糊&#…

百度宣布:免费!

2月13日,百度大模型文心一言在官网宣布,随着文心大模型的迭代升级和成本不断下降,文心一言将于4月1日起全面免费,所有PC端和APP端用户均可体验文心系列最新模型。 同时,文心一言将上线深度搜索功能,具备更…

深度学习框架探秘|TensorFlow vs PyTorch:AI 框架的巅峰对决

在深度学习框架中,TensorFlow 和 PyTorch 无疑是两大明星框架。前面两篇文章我们分别介绍了 TensorFlow(点击查看) 和 PyTorch(点击查看)。它们引领着 AI 开发的潮流,吸引着无数开发者投身其中。但这两大框…

STM32 是什么?同类产品有哪些

STM32 是什么? STM32 是由意法半导体(STMicroelectronics)推出的基于 ARM Cortex-M 内核 的 32 位微控制器(MCU)系列。它专为高性能、低功耗的嵌入式应用设计,广泛应用于以下领域: 工业控制&am…

STM32的HAL库开发---OLED

目录 一、OLED显示屏介绍 二、OLED显示屏驱动原理 三、OLED驱动芯片简介 四、字符显示原理 五、OLED基本驱动步骤 六、OLED编程实战 一、OLED显示屏介绍 常见显示屏:LCD显示屏、点阵显示屏、OLED显示屏。LCD显示屏最常见,技术成熟。 OLED&#x…

超详细的数据结构3(初阶C语言版)栈和队列。

文章目录 栈和队列1.栈1.1 概念与结构1.2 栈的实现 2. 队列2.1 概念与结构2.2 队列的实现 总结 栈和队列 1.栈 1.1 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进行插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另…

SQL布尔盲注+时间盲注

1.布尔盲注 双重for循环 import requestsurl http://127.0.0.1/sqli-labs-master/Less-8/index.phpdef database_name():datebasename for i in range(1, 9): # 假设数据库名称最多8个字符for j in range(32, 128): # ascii 可见字符范围从32到127payload f"?id1 A…