2025-03-25 00:00:00
1Panel 的用户越来越多,内置 Web 服务 OpenResty 使用占比也在增加,但网上对其优化的教程很少。应关关童靴的需求,更新一篇有关 OpenResty 的一些优化建议。可优化设置项较少,需要的小伙伴可以根据实际需求变更配置。
含义:该参数用于设置服务器名字 hash 表大小,若名字过长或服务较多,保持默认值可能使 hash 表空间不足,引发错误。
优化建议:一般为 server_names_hash_max_size
的 1/2-1/3 左右,如服务器配置较高,可直接设置 256
。
gzip_min_length
参数项:对小文件压缩可能得不偿失,一般设置为 1k
或 10k
左右,小于该值的文件不压缩。
gzip_comp_level
参数项:压缩级别,1
为最小最快,9
为最大最慢,通常建议设置为 4-6
,以平衡压缩效果和 CPU 使用率。
含义:用于设置读取客户端请求头的缓冲区大小,若请求头过大,可能超出默认值导致客户端报错。
优化建议:根据实际业务需求调整,如业务请求头通常较大,可设为 32k
左右,确保可以完整读取大部分请求头。
含义:限制客户端请求主体的最大允许大小,超出该值请求将被拒绝。
优化建议:根据业务场景和服务器承受能力设置,如普通表单提交可设置为 10m-20m
左右,对于文件上传等大请求可以适当增大。
含义:设置长连接的超时时间,即客户端与服务器间连接保持空闲的最大时间。
优化建议:一般设为 60-90
秒左右,时间过短会频繁断开连接且增加开销,过长则可能占用过多的资源。
1 |
http { |
注意:以上配置仅供参考,具体优化需根据实际业务场景和硬件配置进行调优。
2025-03-22 00:00:00
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛应用于处理高并发请求。然而,默认配置并不一定适合所有场景,尤其是在高流量或复杂业务逻辑的情况下。本文将介绍一些 Nginx 的基础配置优化和缓存的使用方法以提升 Nginx 的性能。
worker_processes
以及 worker_connections
Nginx 使用多进程模型处理请求。worker_processes
定义 Nginx 使用的工作进程数,而 worker_connections
定义每个工作进程可以处理的最大连接数:
1 |
worker_processes auto; |
参数作用如下:
参数 | 作用 |
---|---|
worker_processes | 设置为 auto 可以让 Nginx 自动根据 CPU 核心数来分配工作进程数。如服务器有 4 个 CPU 核心,Nginx 会启动 4 个工作进程。 |
worker_connections | 这个值决定了每个工作进程可以处理的最大连接数。通常,可根据服务器的内存和网络带宽来调整这个值。1024 是一个常见起点,可以调整到 2048。 |
keepalive
长连接HTTP 协议中的 keepalive
机制允许客户端和服务器在同一个连接上发送多个请求,减少了 TCP 连接的建立和关闭开销:
1 |
http { |
参数作用如下:
参数 | 作用 |
---|---|
keepalive_timeout | 定义客户端与服务器保持连接的时间。设置为 65 秒意味着如果客户端在 65 秒内没有发送新请求,连接将被关闭。 |
keepalive_requests | 定义了单个连接上允许的最大请求数。设置为 100 意味着一个连接可以处理 100 个请求后关闭。 |
buffer
的大小Nginx 使用缓冲区来存储请求和响应数据。如缓冲区设置过小,Nginx 可能会频繁地进行磁盘 I/O 操作,影响性能:
1 |
http { |
参数作用如下:
参数 | 作用 |
---|---|
client_body_buffer_size | 定义用于存储客户端请求体的缓冲区大小。如请求体超过这个大小,会将数据写入磁盘。 |
client_header_buffer_size | 定义用于存储客户端请求头的缓冲区大小。 |
large_client_header_buffers | 定义用于存储大型请求头的缓冲区数量和大小。 |
对于静态资源,启用缓存可以显著减少服务器的负载:
1 |
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { |
参数作用如下:
参数 | 作用 |
---|---|
expires | 定义了资源的缓存时间。30d 表示资源将缓存 30 天。 |
Cache-Control |
public 表示资源可以被任何缓存「如浏览器、CDN等」缓存,no-transform 表示不允许代理服务器对资源进行转换「如压缩等」 |
如使用 Nginx 作为反向代理,可启用代理缓存来缓存后端服务器的响应:
1 |
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; |
参数作用如下:
参数 | 作用 |
---|---|
proxy_cache_path | 定义了缓存存储的路径、缓存键的存储区域、缓存的最大大小及缓存的有效期。 |
proxy_cache | 启用缓存并使用指定的缓存区域。 |
proxy_cache_valid | 定义不同状态码的缓存时间。 |
gzip
压缩减少网络传输量gzip
压缩可以显著减少传输数据量,从而加快页面加载速度:
1 |
http { |
参数作用如下:
参数 | 作用 |
---|---|
gzip | 启用压缩。 |
gzip_types | 定义了需要压缩的文件类型。通常包括文本文件、CSS/JavaScript/XML 等。 |
gzip_comp_level | 定义压缩级别,范围是 1 到 9。1 是最低的压缩率,9 是最高的压缩率。默认值 6 。 |
gzip_min_length | 定义最小压缩文件大小。小于这个大小的文件不会被压缩。 |
gzip_proxied | 定义了是否对代理请求启用压缩。any 表示对所有代理请求启用压缩。 |
gzip_vary | 添加响应,确保代理服务器能正确处理缓存。 |
HTTP/2 提供了多路复用、头部压缩特性,可以显著提升性能:
1 |
server { |
参数作用如下:
参数 | 作用 |
---|---|
http2 | 在 listen 指令中添加 http2 参数即可启用。 |
为了防止恶意请求或突发流量导致服务器过载,可使用 limit_req
模块限制请求速率:
1 |
http { |
参数作用如下:
参数 | 作用 |
---|---|
limit_req_zone | 定义限流区域。$binary_remote_addr 表示根据客户端的 IP 地址进行限流,rate=1r/s 表每秒允许 1 个请求。 |
limit_req | 在指定的位置应用限流。burst=5 表允许突发 5 个请求。 |
1 |
upstream backend { |
注意:通过 upstream
模块可以将请求分发到多个后端服务器,提高并发处理能力。
1 |
access_log /var/log/nginx/access.log main buffer=16k; |
注意:调整日志级别可减少日志输出量,提升性能。这表示将访问日志的缓冲区大小设置为 16KB,并将错误日志级别设置为 warn
。
2025-03-19 00:00:00
1Panel 作为新一代的服务器管理面板,为 Linux 服务器运维提供了一个舒适便捷的 Web 图形界面。为了方便移动办公,1Panel 推出了 APP 移动端,目前还在测试阶段,不过足以满足大多数用户的需求。
1Panel APP 拥有丰富且实用功能特性,涵盖服务器管理的多个重要方面。它支持 Android 和 iOS 系统,确保不同设备用户都能享受到一致的服务体验。用户可以方便地添加多个 1Panel 服务,实现对多台服务器集中管理:
首页全局概览表盘,以直观的方式展示服务器的关键信息,让用户一眼就能了解服务器整体运行状况:
应用管理方面,1Panel APP 表现得十分出色。用户不仅能够查看已安装的应用,还能轻松进行安装、配置、管理操作,极大地简化了应用部署和维护的流程:
对于网站管理,它提供专业的工具,方便用户对网站进行创建和编辑、删除操作,同时支持域名绑定和 SSL 证书配置,确保网站的安全性和稳定性:
Docker 容器管理是 1Panel APP 的一大亮点。用户可以方便创建、启动、停止、删除容器,还可以对容器的资源进行合理分配和监控,满足了开发者和运维人员在容器化部署方面的需求:
服务器状态监控功能则让用户实时掌握 CPU、内存、磁盘等资源的使用情况,及时发现潜在性能瓶颈,为服务器优化提供有力依据:
目前 1Panel APP 正式版仅支持专业版用户使用,可以通过各大厂家应用商店安装手机端 APP。
如果还不是 1Panel 专业版用户,又感觉官方的价格太贵,欢迎选择《1Panel 专业版低价租用》数量有限,先到先得!
2025-03-16 00:00:00
当我们在使用 Linux 系统进行开发或者运维工作时,经常遇到一些错误提示。其中一个常见错误是解释器权限不够。这个错误提示表明在运行
targetcli
命令,系统没有足够权限来执行所需的 Python 解释器。在本文中,我们将探讨这个错误原因和解决方法。
为理解这个错误的原因,我们需要先了解下 Linux 系统的权限管理机制。
Linux 系统将用户和组织分为不同的分类,并为每个用户和组织分配不同的权限。这些权限决定用户可以访问和执行哪些文件和目录。
在这个特定错误中,我们看到了一个错误路径/usr/bin/targetcli
和错误消息/usr/bin/python3:解释器错误:权限不够
。
系统无法在路径/usr/bin/targetcli
下找到所需的 Python 解释器,且没有足够的权限来执行它。
首先,我们需确定缺少的 Python 解释器。
在错误消息中,我们看到了/usr/bin/targetcli
和/usr/bin/python3
两个路径。这告诉我们 targetcli
命令需要 python3
来执行。
接下来我们需要确定 python3
解释器的实际位置。我们可以使用 which
命令来找到解释器的路径。
可在终端中运行命令 which python3
。命令的输出将告诉我们 python3
解释器位置。比如,输出可能是/usr/local/bin/python3
。
python3
解释器路径一旦我们找到了 python3
解释器的位置,我们可以通过修改 targetcli
脚本来更新解释器的路径。
打开终端并输入命令 sudo vi /usr/bin/targetcli
。这将使用编辑器打开 targetcli
脚本。
在脚本中,我们需要查找#!/usr/bin/python3
这一行,并将其替换为 python3
解释器实际路径。
在这个例子中,我们可以将其替换为#!/usr/bin/python3
。
最后,我们需要为 targetcli
脚本提供执行权限。
可在终端中运行命令 sudo chmod +x /usr/bin/targetcli
。如果一切顺利,我们应该不再看到错误消息。
2025-03-13 00:00:00
自飞牛 OS 支持虚拟机后,很多使用飞牛的小伙伴会询问杜老师有关 DDNS 的问题。希望可以白嫖一个二级域名,支持 API 变更解析值,且支持 IPv6 解析。恰好杜老师发现了一个网站,支持多后缀的二级域名白嫖,这里分享给需要的小伙伴们!
dynv6 是一款免费的动态 DNS 服务,其专为 IPv6 设计。
它允许用户将公共主机名轻松分配给私有主机,从而实现对私有主机的远程访问。
dynv6 对所有用户免费开放。可以选择一个免费的主机名开始使用,或者将自己的域名委托给 dynv6。
然而,需要注意的是,dynv6 目前并不提供企业级的 DDoS 防护和 SLA。因此,dynv6 适合用于非关键服务。
2025-03-10 00:00:00
杜老师使用 Emby 管理媒体文件,但刮削时经常报错。tinyMediaManager 是款功能强大的开源媒体管理工具,能够帮助轻松整理和管理媒体库。本文将详细介绍 tinyMediaManager 的搭建过程和基本使用方法。
tinyMediaManager 简称 TMM 是一款用 Java/Swing 编写的媒体管理工具,能够为 Jellyfin、Emby 等媒体服务器提供元数据。
通过 TMM 可以抓取和整理影片详细信息、封面图像、演员列表、导演信息等元数据,让媒体库更加丰富、完整。
准备好想要管理的电影、电视剧等媒体文件,并将其存放在一个固定的目录中,方便 TMM 进行扫描和管理。
我们假设电影文件放入</path/to/movies>
目录中,命令可参考 mkdir </path/to/movies>
。
电视文件放入</path/to/tv_shows/>
目录中,命令可参考 mkdir </path/to/tv_shows/>
。
新建数据文件夹</path/to/local/data/>
,命令可参考 mkdir </path/to/local/data/>
。
这里我们使用 Docker 来部署,docker-compose.yml
的参考内容如下:
1 |
--- |
将上方代码中<password>
改为 TMM 访问密码,配置好后执行如下命令即可:
1 |
docker-compose up -d |