Nginx实战 | 高性能HTTP和反向代理神器Nginx前世今生,以及它的“繁花之境”

news2024/11/19 19:18:44

专栏集锦,大佬们可以收藏以备不时之需:

Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9

Python 专栏:http://t.csdnimg.cn/hMwPR

Redis 专栏:http://t.csdnimg.cn/Qq0Xc

TensorFlow 专栏:http://t.csdnimg.cn/SOien

Logback 专栏:http://t.csdnimg.cn/UejSC

量子计算:

量子计算 | 解密著名量子算法Shor算法和Grover算法

AI机器学习实战:

AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析

AI机器学习 | 基于librosa库和使用scikit-learn库中的分类器进行语音识别

Python实战:

Python实战 | 使用 Python 和 TensorFlow 构建卷积神经网络(CNN)进行人脸识别

Spring Cloud实战:

Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

1024程序员节特辑文章:

1024程序员狂欢节特辑 | ELK+ 协同过滤算法构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | OKR VS KPI谁更合适?

1024程序员节特辑 | Spring Boot实战 之 MongoDB分片或复制集操作

Spring实战系列文章:

Spring实战 | Spring AOP核心秘笈之葵花宝典

Spring实战 | Spring IOC不能说的秘密?

国庆中秋特辑系列文章:

国庆中秋特辑(八)Spring Boot项目如何使用JPA

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

国庆中秋特辑(五)MySQL如何性能调优?下篇

国庆中秋特辑(四)MySQL如何性能调优?上篇

国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现

国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

在这里插入图片描述

目录

  • 1 Nginx 发展历史
  • 2 如何使用 Nginx
  • 3 详细配置 Nginx
    • 3.1 安装 Nginx
    • 3.2 配置文件结构
    • 3.3 配置虚拟主机
    • 3.4 配置代理
    • 3.5 配置 SSL/TLS
      • 3.5.1 准备 SSL/TLS 证书和私钥
      • 3.5.2 配置 Nginx 服务器块
      • 3.5.3 配置要点解释
      • 3.5.4 重启 Nginx 服务
      • 3.5.5 测试 SSL/TLS 配置
    • 3.6 配置缓存
    • 3.7 配置负载均衡
      • 3.7.1 健康检查
    • 3.8 配置访问控制
    • 3.9 配置日志
      • 3.9.1 访问日志
      • 3.9.2 错误日志
      • 3.9.3 日志滚动
    • 3.10 测试和优化
      • 3.10.1 负载测试
      • 3.10.2 性能测试
      • 3.10.3 配置优化
      • 3.10.4 代码级优化
      • 3.10.5 日志分析
      • 3.10.6 使用性能监控工具

1 Nginx 发展历史

Nginx 的历史可以追溯到 1990 年代末期,当时互联网开始迅速发展,传统的 HTTP 服务器如 Apache 开始显得力不从心,无法满足日益增长的访问量和并发请求。为了解决这个问题,Igor Sysoev 开始编写 Nginx,首个版本在 2004 年发布。Nginx 的设计理念是追求极高的性能和稳定性,同时还具有较低的内存消耗和资源占用,这使得它能够处理大量并发请求,非常适合于需要处理高负载的服务器环境。

  • 早期开发:Nginx最初是在Unix-like系统中运行的,使用C语言开发,并在一个BSD-like许可证下发布。它的设计受到了当时的网络环境以及Igor Sysoev作为系统管理员的工作经验的影响。
  • 版本迭代:随着时间的发展,Nginx逐渐增加了更多的功能,如SSL/TLS支持、虚拟主机、HTTP/2等,并且不断地对性能进行优化。
  • 社区和公司:2009年,Sysoev与别人合伙成立了Nginx公司,以支持Nginx的发展。2019年,Nginx公司被F5 Networks收购,成为其商业产品的一部分。
  • 创始人离职:2020年,Igor Sysoev宣布退出F5 Networks,以更多地关注家庭和个人项目。他在离职时得到了社区的高度评价和感谢,因为他的工作对Nginx的成功和互联网的发展有着深远的影响。

2 如何使用 Nginx

使用 Nginx 主要包括以下几个步骤:

  1. 下载和安装:首先,用户需要从 Nginx 的官方网站下载适合自己操作系统的 Nginx 版本。Nginx 提供了 Linux、Windows 等平台的版本。下载完成后,根据操作系统的不同,执行相应的安装程序。
  2. 配置:Nginx 的配置相对简洁。它使用基于文件系统的配置,主要通过修改配置文件来设置代理、缓存、负载均衡等。配置文件通常位于安装目录下的 nginx.conf,此外还包括用于设置静态资源服务、虚拟主机等的额外配置文件。
  3. 启动和停止:通过执行安装目录下的 nginx 命令来启动 Nginx 服务,而停止服务通常可以通过 nginx -s stop 或使用操作系统服务管理工具来实现。
  4. 测试:启动服务后,可以通过访问 http://localhost 或服务器 IP 地址来测试 Nginx 是否正常运行。
  5. 监控和维护:Nginx 提供了监控工具,比如 nginx -s status 来检查服务状态。此外,定期检查和更新软件,以及监控服务器性能和访问日志,对于维护 Nginx 服务是必要的。

3 详细配置 Nginx

配置 Nginx 是一个相对复杂的过程,下面将详细介绍如何配置 Nginx。

3.1 安装 Nginx

在 Linux 系统中,您可以使用包管理器来安装 Nginx。例如,在 Ubuntu 或 Debian 上,您可以使用以下命令:

sudo apt update
sudo apt install nginx

在 CentOS 或 RHEL 上,您可以使用以下命令:

sudo yum install epel-release
sudo yum install nginx

如果您需要从源代码编译 Nginx,可以执行以下命令:

wget http://nginx.org/download/nginx-1.21.3.tar.gz
tar zxvf nginx-1.21.3.tar.gz
cd nginx-1.21.3
./configure
make
sudo make install

3.2 配置文件结构

Nginx 的配置文件通常位于 /etc/nginx//usr/local/nginx/conf/。主要配置文件是 nginx.conf,它包含了全局配置。此外,还有 sites-availablesites-enabledconf.d 目录,这些目录包含了虚拟主机的配置文件。

3.3 配置虚拟主机

要配置一个虚拟主机,您需要在 sites-available 目录下创建一个配置文件,然后将其符号链接到 sites-enabled 目录。在配置文件中,您可以设置服务器监听的主机名、端口、文档根目录等。例如:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example;
    index index.html index.htm;
}

3.4 配置代理

Nginx 可以配置为反向代理服务器,将请求转发到后端服务器。在配置文件中,您需要设置代理服务器的主机名和端口,以及如何处理请求。例如:

location / {
    proxy_pass http://backend-server:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

3.5 配置 SSL/TLS

配置 Nginx 以使用 SSL/TLS 是保护网站安全性和用户隐私的重要步骤。以下是一个基本的指南,用于在 Nginx 中配置 SSL/TLS。

3.5.1 准备 SSL/TLS 证书和私钥

在配置 Nginx 之前,您需要有一个有效的 SSL/TLS 证书和相应的私钥。您可以从证书颁发机构(CA)获得证书,或者使用 Let’s Encrypt 提供的免费证书。如果您选择 Let’s Encrypt,可以使用 certbot 工具自动获取和配置证书。

3.5.2 配置 Nginx 服务器块

在 Nginx 配置文件中,通常在 server 块内添加 SSL/TLS 配置。以下是一个示例配置:

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/privatekey.pem;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    root /var/www/example;
    index index.html index.htm;
}

3.5.3 配置要点解释

  • listen 443 ssl;:这指定服务器在端口 443 上监听 SSL/TLS 连接。
  • ssl_certificatessl_certificate_key:这些指令指定 SSL/TLS 证书和私钥的路径。确保这些文件是正确的,并且服务器用户有权限读取它们。
  • ssl_session_cachessl_session_timeout:这些指令配置 SSL 会话缓存和超时设置。
  • ssl_ciphers:这个指令指定用于加密的 SSL 演算法。您应该选择强加密算法,并避免使用已弃用的算法。
  • ssl_prefer_server_ciphers on;:这告诉客户端优先使用服务器提供的加密套件。

3.5.4 重启 Nginx 服务

在更新配置文件后,您需要重启 Nginx 服务以使更改生效:

sudo systemctl restart nginx

或者,如果您不是使用系统服务管理器,可以使用以下命令:

sudo nginx -s restart

3.5.5 测试 SSL/TLS 配置

在重启服务后,您应该测试 SSL/TLS 配置是否正确。您可以使用 curl 命令来测试:

curl -I https://example.com

您应该看到返回的响应中包含 HTTP/2 200 状态码,以及 SSL/TLS 相关的头部信息,表明 SSL/TLS 已正确配置。
请注意,SSL/TLS 配置可能会因您的具体需求和服务器配置而有所不同。确保遵循最佳实践,并定期更新您的证书和私钥。

3.6 配置缓存

Nginx 可以通过 proxy_cache 模块来缓存后端服务器的响应。这需要确保您的 Nginx 编译时包含了 ngx_http_proxy_modulengx_http_cache_module。大多数标准 Nginx 安装都包含这些模块。
以下是一个基本的 Nginx 缓存配置示例:

http {
    proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=cache_zone:10m;
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_cache cache_zone;
            proxy_cache_valid any;
            proxy_cache_min_uses 1;
            proxy_cache_max_uses 10;
            proxy_cache_disk_mode async;
            proxy_cache_exclude "*/charset/*.html";
        }
    }
}

在这个例子中:

  • proxy_cache_path 指令用于设置缓存的存储路径和大小。levels=1:2 表示缓存的存储层次,keys_zone=cache_zone:10m 表示缓存的键值存储在内存中的大小为 10MB。
  • upstream 定义了后端服务器组。
  • proxy_pass 指令将请求转发到后端服务器。
  • proxy_set_header 指令确保转发请求时携带必要的头部信息。
  • proxy_cache 指令启用缓存,并指定缓存的键值存储在哪个 keys_zone 中。
  • proxy_cache_valid 指令设置缓存的响应状态码,any 表示所有状态码的响应都可以缓存。
  • proxy_cache_min_usesproxy_cache_max_uses 指令设置缓存的最低和最高使用次数。
  • proxy_cache_disk_mode 指令设置磁盘 I/O 模式,async 表示异步模式,可以提高性能。
  • proxy_cache_exclude 指令用于排除某些文件或目录的缓存。
    请注意,这只是一个基本的缓存配置示例。在实际应用中,您可能需要根据具体情况调整缓存路径、大小、过期时间等。此外,Nginx 还支持更高级的缓存配置,如缓存动态内容、使用不同的缓存策略等。

3.7 配置负载均衡

Nginx 的负载均衡功能是通过其内置的 upstream 模块实现的。以下是一个基本的 Nginx 负载均衡配置示例:

http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
        # 可以设置权重,如 server srv1.example.com weight=3;
        # 其他负载均衡方法还包括 least_conn, ip_hash 等。
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp1;
            # 在这里可以设置更多的代理设置,如 proxy_set_header, proxy_connect_timeout 等。
        }
    }
}

在这个例子中,myapp1 是一个上游服务器组,它包含三个服务器:srv1.example.comsrv2.example.comsrv3.example.com。Nginx 将根据配置的负载均衡算法(默认是轮询)将请求分发到这些服务器上。

  • server 指令用于定义一个上游服务器,可以指定服务器的主机名或 IP 地址。
  • weight 指令用于设置服务器的权重,权重越高的服务器将接收更多的请求。
  • least_conn 指令用于启用最少连接数负载均衡算法,请求将被发送到当前连接数最少的服务器。
  • ip_hash 指令用于启用基于源 IP 的哈希负载均衡算法,来自同一 IP 的请求总是被代理到同一台服务器,这有助于保持用户的会话。

3.7.1 健康检查

Nginx 还提供了健康检查功能,以确保上游服务器组的健康状态。以下是一个包含健康检查的配置示例:

http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
        # 健康检查
        health_check {
            enable on;
            interval 3000; # 每隔 3 秒检查一次
            timeout 1000; # 超时时间
            unhealthy_threshold 3; # 不健康连续检查次数
            healthy_threshold 3; # 健康连续检查次数
            http_get http://example.com/health; # 检查的 URL
        }
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp1;
            # 其他代理设置
        }
    }
}

在这个例子中,health_check 指令用于配置健康检查。如果服务器在连续三次检查中都未能通过健康检查,它将被标记为不健康,并将不再接收新的请求。当服务器恢复健康时,它将重新加入上游服务器组。
请注意,这些示例仅用于说明 Nginx 负载均衡的基本配置。在实际应用中,您可能需要根据具体情况调整服务器地址、负载均衡算法、健康检查配置等。此外,Nginx 还支持更高级的配置,如使用 upstream 模块中的 hashurl_hashleast_time 等指令,以及通过 map 模块进行更复杂的请求路由。

3.8 配置访问控制

在 Nginx 中,访问控制通常是通过 location 指令和 allowdeny 指令来实现的。这些指令可以定义哪些客户端(基于 IP 地址)被允许访问特定的位置(URL 或路径)。以下是一个简单的访问控制配置示例:

http {
    server {
        listen 80;
        location / {
            # 允许来自特定IP地址的访问
            allow 192.168.1.0/24;
            # 拒绝来自特定IP地址的访问
            deny all;
        }
        location /private/ {
            # 只允许来自特定IP地址的访问
            allow 192.168.1.10;
            # 拒绝其他所有IP地址的访问
            deny all;
        }
    }
}

在这个例子中:

  • allow 指令用于指定允许访问的 IP 地址或地址范围。例如,192.168.1.0/24 表示允许来自 IP 地址 192.168.1.0192.168.1.255 的访问。
  • deny 指令用于指定拒绝访问的 IP 地址或地址范围。使用 all 表示拒绝所有不匹配 allow 指令的 IP 地址。
  • location 指令用于匹配特定的 URL 或路径。当请求的 URL 匹配到某个 location 时,相应的 allowdeny 指令将被应用。
    请注意,allowdeny 指令在同一个 location 中使用时,allow 指令的优先级高于 deny 指令。这意味着如果请求的 IP 地址同时匹配到 allowdeny,请求将被允许。
    此外,Nginx 还支持使用 geo 模块进行基于地理位置的访问控制,以及使用 map 模块进行更复杂的访问控制策略。这些功能可能需要额外的配置和模块支持。

3.9 配置日志

Nginx 的日志配置通常包括访问日志和错误日志。访问日志记录了客户端的请求信息,而错误日志记录了 Nginx 的错误信息。以下是如何配置这两种日志的示例:

3.9.1 访问日志

访问日志的配置通常在 http 块中进行,使用 log_format 指令定义日志的格式,然后使用 access_log 指令指定日志文件的路径和名称。

http {
    log_format combined_with_time '$remote_addr - $remote_user [$time_local] '
                                 '"$request" $status $body_bytes_sent '
                                 '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    server {
        listen 80;
        location / {
            # 其他配置...
        }
        access_log /var/log/nginx/access.log combined_with_time;
    }
}

在这个例子中:

  • log_format 指令定义了一个名为 combined_with_time 的日志格式,它包括了客户端的 IP 地址、用户、请求时间、请求方法、状态码、传输的字节数、引用来源、用户代理和 X-Forwarded-For 头部。
  • access_log 指令指定了日志文件的路径和名称,以及使用的日志格式。

3.9.2 错误日志

错误日志的配置通常在 http 块中进行,使用 error_log 指令指定日志文件的路径和名称。

http {
    # 其他配置...
    server {
        listen 80;
        location / {
            # 其他配置...
        }
        error_log /var/log/nginx/error.log;
    }
}

在这个例子中:

  • error_log 指令指定了错误日志文件的路径和名称。

3.9.3 日志滚动

Nginx 也支持日志滚动,这意味着当日志文件达到一定大小时,它会自动切换到下一个文件。这可以通过 logrotate 指令配置。

http {
    # 其他配置...
    server {
        listen 80;
        location / {
            # 其他配置...
        }
        access_log /var/log/nginx/access.log combined_with_time;
        error_log /var/log/nginx/error.log;
        logrotate {
            daily;
            rotate 7;
            postrotate
                /usr/sbin/nginx -s reopen;
            endscript;
        }
    }
}

在这个例子中:

  • logrotate 指令配置了日志的滚动策略,daily 表示每天滚动一次,rotate 7 表示保留最近的 7 个日志文件。
  • postrotate 指令用于在日志滚动后执行命令,这里是通过 nginx -s reopen 命令重新打开日志文件。
    请注意,这些示例仅用于说明 Nginx 日志配置的基本方法。在实际应用中,您可能需要根据具体情况调整日志格式、路径、滚动策略等。此外,Nginx 还支持更高级的日志配置,如使用 log_format 指令自定义日志格式,以及通过 map 模块进行更复杂的日志处理。

3.10 测试和优化

Nginx 的测试和优化可以通过多种方式进行,包括负载测试、性能测试、配置优化和代码级优化。以下是一些基本的步骤和方法:

3.10.1 负载测试

负载测试可以帮助你了解 Nginx 在高负载情况下的性能。可以使用工具如 Apache Bench(ab)或wrk来进行测试。
例如,使用 Apache Bench 进行测试的命令如下:

ab -n 1000 -c 100 http://your-nginx-server.com/

这个命令会向指定的 Nginx 服务器发送 1000 个请求,每次发送 100 个请求。

3.10.2 性能测试

性能测试可以帮助你了解 Nginx 的处理能力和响应时间。可以使用工具如 Siege 进行测试。
例如,使用 Siege 进行测试的命令如下:

siege -c 100 -r 1000 http://your-nginx-server.com/

这个命令会使用 100 个并发用户对服务器进行性能测试。

3.10.3 配置优化

优化 Nginx 的配置文件可以显著提高性能。以下是一些常见的优化建议:

  • 减少 HTTP 头部的传输大小。
  • 开启 GZIP 压缩。
  • 使用 expires 指令设置缓存过期时间。
  • 使用 limit_req 模块限制请求速率。
  • 使用 limit_conn 模块限制并发连接数。
    例如,以下配置可以减少 HTTP 头部的大小并开启 GZIP 压缩:
http {
    server {
        listen 80;
        location / {
            # 开启 GZIP 压缩
            gzip on;
            # 设置最小压缩文件大小
            gzip_min_length 1k;
            # 压缩缓冲区大小
            gzip_buffers 16 8k;
            # 设置压缩级别,1 压缩速度最快,9 压缩率最高,通常设置为4
            gzip_comp_level 4;
            # 对指定的 MIME 类型生效
            gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
        }
    }
}

3.10.4 代码级优化

如果需要更深入的优化,可以修改 Nginx 的源代码。这通常涉及到内核级别的优化,需要具备相应的编程技能和知识。
例如,可以修改 Nginx 的 ngx_http_core_module 模块来优化 HTTP 请求的处理。

3.10.5 日志分析

分析 Nginx 的日志文件可以帮助你了解服务器的性能和问题所在。可以使用工具如 awk、grep 或 logstash 进行日志分析。
例如,使用 grep 查找所有 500 内部服务器错误的日志:

grep '500 Internal Server Error' /var/log/nginx/error.log

3.10.6 使用性能监控工具

使用性能监控工具如 Prometheus 和 Grafana 可以帮助你实时监控 Nginx 的性能指标,并进行相应的优化。
通过这些测试和优化方法,你可以了解 Nginx 的性能瓶颈,并采取相应的措施来提高其性能。请注意,优化应该是一个持续的过程,需要根据实际情况和需求进行调整。

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

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

相关文章

基于ssm的图书管理系统设计与实现论文

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(1) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

计算机网络-各层协议

大家在搞嵌入式开发的时候基本都了解过七层网络协议、五层网络协议、四层网络协议,那么今天让我们更加的深入了解一下: 历史发展介绍 OSI七层模型由ISO国际标准化组织提出的通信标准。TCP/IP四层模型是OSI七层模型的简化版,OSI在它被官方完…

索罗斯:真正好的投资都是无聊的

赚钱,要依靠正常价值的商品出现折扣以及押注意外事件。 我之所以富有,是因为我知道什么时候犯错了。我的“幸存”基本上都是因为我认识到并改正了错误。我们应该明白,人类都会犯错,犯错并不丢人,丢人的是不能改正错误。…

深度学习 Day26——J5DenseNet+SE-Net实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…

常见排序算法及其稳定性分析

前言: 排序算法可以说是每一个程序员在学习数据结构和算法时必须要掌握的知识点,同样也是面试过程中可能会遇到的问题,在早些年甚至还会考冒泡排序。由此可见呢,掌握一些常见的排序算法是一个程序员的基本素养。虽然现在的语言标…

高标准农田建设的实施要点

高标准农田应用大数据、物联网、移动互联等现代信息技术,对基地种植区域的气象环境、土壤墒情、病虫害、农事活动等进行实时监测,实现农田种植智能化、经营网络化、管理高效化、服务便捷化,全面提高农田种植现代化水平。在高标准农田的建设方…

git秘钥过期 ERROR: Your SSH key has expired

文章目录 1、错误提示Your SSH key has expired2、登录Github确认3、重新设置秘钥 1、错误提示Your SSH key has expired 使用git命令时遇到Github 的 SSH Key秘钥过期,提示错误ERROR: Your SSH key has expired 2、登录Github确认 首先登录Github查看&#xff…

CSAPP阅读笔记-信息的表示和处理

信息的表示和处理 包括整数、浮点数的存储格式、计算中可能存在的问题等 信息存储 大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c…

Fedora Linux 中安装 nginx

Fedora 35 中安装 nginx 的方法非常简单。 运行下面的命令: sudo dnf install nginx 在提示你需要确认的地方,输入 y 后回车即可。 开机自动启动 如果你希望在你的操作系统重启的时候自动启动 nginx,请输入下面的命令: syst…

2.2.3机器学习—— 判定梯度下降是否收敛 + α学习率的选择

2.2.3 判定梯度下降是否收敛 α学习率的选择 2.1、 判定梯度下降是否收敛 有两种方法,如下图: 方法一: 如图,随着迭代次数的增加,J(W,b)损失函数不断下降当 iterations 300 之后,下降的就不太明显了 / …

shader技巧

数学函数: abs():绝对值函数。 acos():反余弦函数。 asin():反正弦函数。 atan():反正切函数。 ceil():向上取整函数。 cos():余弦函数。 cross():向量叉积函数。 distance()&#x…

MyBatis:自定义 typeHandler 处理枚举类型

MyBatis 枚举类型typeHandler 枚举类型 枚举类型,在 Java 中属于基本数据类型,而不是构造数据类型,用于声明一组命名的常数。枚举可以根据 Integer 、Long 、Short 或 Byte 中的任意一种数据类型来创建一种新型变量。这种变量可以设置为已经…

【Python程序开发系列】一文总结API的基本概念、功能分类、认证方式、使用方法和开发流程

这是Python程序开发系列原创文章,我的第195篇原创文章。 一、什么是API? API是软件开发中非常重要的概念,它简化了不同组件之间的交互和集成,提供了对其他软件或服务功能的访问和调用方式。 API是应用程序编程接口(Ap…

SSL证书不受信任怎么办? SSL证书不受信任解决方案汇总

随着网络安全问题日益凸显,网站使用SSL证书以实现HTTPS加密及身份的可信认证,防止传输数据的泄露或篡改,已成为互联网人的共识。但SSL证书并不是部署了就能正常使用的,有时浏览器会提示“SSL证书不受信任”,这种时候该…

Java--业务场景:SpringBoot 通过Redis进行IP封禁实现接口防刷

文章目录 前言具体实现步骤1. 定义自定义注解2. 编写拦截器类IpUrlLimitInterceptor3. 在WebConfig类中添加IpUrlLimitInterceptor4. 添加注解到接口上 测试效果参考文章 前言 在实际项目中,有些攻击者会使用自动化工具来频繁刷新接口,造成系统的瞬时吞…

vue配置qiankun及打包上线

项目结构 基座:vue3 子应用A:vue3 子应用B: react 子应用C:vue3vite 项目目录: 配置基座 首先下载qiankun yarn add qiankun # 或者 npm i qiankun -S 所有子应用也要安装,vue-vite项目安装 cnpm ins…

XUbuntu22.04之快速复制绝对路径(二百零五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Java项目:115SSM宿舍管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 宿舍管理系统基于SpringSpringMVCMybatis开发,系统主要功能如下: 学生管理班级管理宿舍管理卫生管理维修登记访客管理 二、技术框…

向量数据库:Milvus

特性 Milvus由Go(63.4%),Python(17.0%),C(16.6%),Shell(1.3%)等语言开发开发,支持python,go,java接口(C,Rust,c#等语言还在开发中),支持单机、集群部署,支持CPU、GPU运算。Milvus 中的所有搜索和查询操作都在内存中执行…