首页 > 系统相关 >Nginx 配置HTTPS

Nginx 配置HTTPS

时间:2024-09-23 10:13:43浏览次数:6  
标签:ssl 证书 配置 server Nginx HTTPS SSL

HTTPS 是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

在 Nginx 中,配置 HTTPS 也非常的简单,我们首先需要准备好与我们域名关联的 HTTPS 证书,接着,再配置对应的证书目录即可。

Nginx配置HTTPS的详细过程涉及多个步骤,包括准备SSL证书、编辑Nginx配置文件、重启Nginx服务等。以下是对这些步骤的详细解析及案例:

一、准备SSL证书

  1. 获取证书:

    • 可以从证书颁发机构(CA)购买SSL证书。

    • 也可以使用免费证书服务,如Let's Encrypt,通过自动化工具(如Certbot)获取和续期证书。

  2. 证书文件:

    • SSL证书通常包括一个公钥证书文件(如yourdomain.crtfullchain.pem)和一个私钥文件(如yourdomain.keyprivatekey.pem)。

二、编辑Nginx配置文件

  1. 定位配置文件:

    • Nginx的配置文件通常位于/etc/nginx/nginx.conf,或者可以在/etc/nginx/sites-available/目录下创建新的配置文件,并通过链接到/etc/nginx/sites-enabled/目录来启用。

  2. 编辑HTTPS服务器块:

    示例配置如下:

    server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /path/to/your/fullchain.pem; # 证书文件路径
    ssl_certificate_key /path/to/your/privatekey.pem; # 私钥文件路径

    ssl_protocols TLSv1.2 TLSv1.3; # 推荐的TLS协议
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384';

    location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    }

    # 其他配置...
    }

    证书文件会作为公用实体發送到每台连接到服务器的客戶端,私钥文件作为安全实体,应该被存放在具有一定权限限制 的目录文件,并保证 Nginx 主进程有存取权限。

    • 在Nginx配置文件中,添加一个或多个server块来监听443端口(HTTPS的默认端口)。

    • 配置SSL证书和私钥的路径,以及其他SSL相关指令。

  3. (可选)配置HTTP到HTTPS的重定向:

    示例配置如下:

    server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    return 301 https://$server_name$request_uri;
    }
    • 在Nginx中添加另一个监听80端口的server块,将所有HTTP请求重定向到HTTPS。

三、测试并重启Nginx

  1. 测试配置:

    • 使用nginx -t命令测试Nginx配置文件的语法是否正确。

  2. 重启Nginx:

    • 如果配置测试通过,使用sudo systemctl reload nginx(对于使用systemd的系统)或sudo service nginx reload命令来重新加载Nginx配置。

四、验证HTTPS

  • 在浏览器中输入你的域名(如https://yourdomain.com),检查是否成功通过HTTPS连接,并且没有显示任何证书错误。

五、Nginx HTTPS优化

减少CPU运算量

SSL 的运行计算需要消耗额外的 CPU 资源,一般多核处理器系统会运行多个工作进程,进程的数量不会少于可用的 CPU 核数。SSL 通讯过程中 “握手” 阶段的运算最占用 CPU 资源,有两个方法可以减少每台客户端的运算量:

  • 激活 keepalive 长连接,一个连接发送更多个请求

  • 复用 SSL 会话参数,在并行并发的连接数中避免进行多次 SSL 握手

    这些会话会存储在一个 SSL 会话缓存里面,通过命令 ssl_session_cache 配置,可以使缓存在机器间共享,然后利用客戶端在握手阶段使用的 seesion id 去查询服务端的 session cathe(如果服务端设置有的话),简化握手阶段。

    1M 的会话缓存大概包含 4000 个会话,默认的缓存超时时间为 5 分钟,可以通过使用 ssl_session_timeout 命令设置缓存超时时间。下面是一个拥有 10M 共享会话缓存的多核系统优化配置例子:

    worker_processes auto;
    http {
    #配置共享会话缓存大小
    ssl_session_cache shared:SSL:10m;
    #配置会话超时时间
    ssl_session_timeout 10m;
    server {
    listen 443 ssl;
    server_name www.haicoder.net;
    #设置长连接
    keepalive_timeout 70;
    ssl_certificate www.haicoder.net.crt;
    ssl_certificate_key www.haicoder.net.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    #...

六、注意事项

  • SSL/TLS协议和加密套件:确保配置了强密码套件和安全的TLS协议版本。

  • HSTS(HTTP Strict Transport Security):可以启用HSTS来提高安全性,通过HTTP响应头告诉浏览器只能通过HTTPS访问网站。

  • 证书续期:定期检查和续期SSL证书,以确保网站的安全性。

通过以上步骤,你可以在Nginx上成功配置HTTPS,为网站提供安全的HTTPS访问。

标签:ssl,证书,配置,server,Nginx,HTTPS,SSL
From: https://www.cnblogs.com/qxqbk/p/18426496

相关文章

  • 网站数据库错误的原因通常包括配置错误、编码错误、硬件故障、网络问题、数据损坏、权
    网站数据库错误可能由多种因素引起,主要包括以下几点:配置错误:数据库或应用程序的配置不当可能导致连接失败或其他运行时错误。编码错误:程序中的逻辑错误或语法错误也可能导致数据库操作失败。硬件故障:服务器硬件出现问题,如硬盘损坏、内存故障等,会影响数据库的正常运行。网络问......
  • 【HTTP 和 HTTPS详解】4
    目录HTTP协议中的缓存缓存控制标头HTTP中的身份验证和授权基本身份验证摘要式身份验证开放授权基于令牌的身份验证JWT(JSONWeb令牌)Cookie和会话设置和管理Cookie设置Cookies安全和HttpOnly标志会话管理替代数据存储方法浏览器端数据存储服务器端数据存......
  • http和https的区别
    HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)之间的区别主要体现在安全性、连接方式、证书管理、端口号、资源消耗和兼容性等方面。下面我将逐一介绍这些区别:1.安全性HTTP:是明文传输的,意味着数据在网络中传输时没有加密,因此这些数据可能会被截获或篡改。HTTPS:在HTTP的基础......
  • 网络原理 HTTP与HTTPS协议
     博主主页: 码农派大星.  数据结构专栏:Java数据结构 数据库专栏:MySQL数据库JavaEE专栏:JavaEE关注博主带你了解更多计算机网络知识目录1.HTTP概念2.HTTP报文格式3.HTTP请求 1.首行1.1URL  1.2GET⽅法 1.3POST⽅法1.4其他⽅法 2.请求头(header......
  • pgsql 查看日志文件大小、数据目录、运行日志相关配置、当前lsn
    常用命令  查看数据目录 showdata_directory; 是否开启归档 showarchive_mode;  --查看日志目录所有文件select*frompg_ls_logdir();--查看/data目录下的文件selectpg_ls_dir('/data'); 输出数据库WAL目录的所有文件--输出文件总大小,单位是byte  select......
  • MyBatis的配置文件详解
    01-MyBatis的配置文件详解创建的接口和xml文件的名字最好写一样的要不然会出问题,然后和接口名相同的xml文件在resources下创建个和接口相同文件夹把xml文件放进去,而且resources下的创建的文件夹需要一级一级的创键,比如:cn创建完,创建tulingxue,然后再创建mapper文件夹才行......
  • Ubuntu24.04安装及初始化配置
    一、系统简介Ubuntu基于debian以桌面应用为主的开源操作系统,长期支持版本LTS通常每两年发布一次,如最新的版本24.04,上一个版本22.04,每个版本有5年支持周期,适合企业生产服务器使用,另外对容器支持较好,很多docker基础镜像采用utuntu。国产替代操作系统基于debian的有银河麒麟V10、统信U......
  • 用Eide下配合Cubemx配置stm32环境
    PS:本篇为个人学习的记录,一是方便回忆,二是相同时方便给像我一样的小白一点建议。本文默认已安装好STM32Cubemx和VSCode,以及VsCode下的EideCubemx部分选择好需要使用的对应单片机创建工程。在ProjectManager选项下选择Toolchain/IDE下的makefile方式来创建工程。什么是ma......
  • SpringCloud(九)配置中心和消息总线
    ##SpringCloudBusSpringcloudbus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Springbus的一个核心思想是通过分布式的启动器对springboot应用进行扩展,也可以用来建立一个多个应用之间的通信频道。目前唯一实现的方式......
  • 如何生成免费的HTTPS证书
    如何生成免费的HTTPS证书原创 前端赏金猎人 前端赏金猎人  2024年08月25日10:20 江苏 听全文生成免费的HTTPS证书,有多种方法可供选择,这些方法大多依赖于不同的证书颁发机构(CA)提供的免费服务。以下是一些常用的方法来生成免费的HTTPS证书:1.使用Let'sEncryptLet'......