阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux服务器下Nginx的安全配置

463次阅读
没有评论

共计 11942 个字符,预计需要花费 30 分钟才能阅读完成。

1、一些常识
Linux 下,要读取一个文件,首先需要具有对文件所在文件夹的执行权限, 然后需要对文件的读取权限。

php 文件的执行不需要文件的执行权限,只需要 nginx 和 php-fpm 运行账户的读取权限。

上传木马后,能不能列出一个文件夹的内容,跟 php-fpm 的运行账户对文件夹的读取权限有关, 木马执行命令的权限跟 php-fpm 的账户权限有关。

如果木马要执行命令,需要 php-fpm 的账户对相应的 sh 有执行权限。

读取一个文件夹内的文件,是不需要对文件夹有读取权限的,只需要对文件夹有执行权限。

1、顶部配置

# 定义 Nginx 运行的用户和用户组
user nginx;
 
# 进程文件
pid /var/run/nginx.pid;
 
# 错误日志位置和级别,debug、info、notice、warn、error、crit
error_log  /var/log/nginx/error.log warn;
 
#Nginx worker 的进程数,一般可设置为可用的 CPU 内核数。
worker_processes 8;
 
# 每个 worker 打开文件描述符的最大数量限制。理论值应该是最多打开文件数(系统的值 ulimit -n)与 nginx 进程数相除,但是 nginx 分配请求并不均匀,所以建议与 ulimit - n 的值保持一致。
worker_rlimit_nofile 65535;

2、Events 模块

 events {
    #设置一个 worker 进程同时打开的最大连接数
    worker_connections 2048;
 
    #告诉 nginx 收到一个新连接通知后接受尽可能多的连接
    multi_accept on;
 
    #设置用于复用客户端线程的轮询方法。如果你使用 Linux 2.6+,你应该使用 epoll。如果你使用 *BSD,你应该使用 kqueue。
    use epoll;
}

3、HTTP 模块
 http {
    #隐藏 Nginx 的版本号,提高安全性。
    server_tokens off;
 
    #开启高效文件传输模式,sendfile 指令指定 Nginx 是否调用 sendfile 函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的负载。
    sendfile on;
 
    #是否开启目录列表访问,默认关闭。
    autoindex off;
 
    #告诉 Nginx 在一个数据包里发送所有头文件,而不一个接一个的发送
    tcp_nopush on;
 
    #告诉 Nginx 不要缓存数据,而是一段一段的发送 – 当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。Nginx 默认会始终工作在 tcp nopush 状态下。但是当开启前面的 sendfile on; 时,它的工作特点是 nopush 的最后一个包会自动转转换到 nopush off。为了减小那 200ms 的延迟,开启 nodelay on; 将其很快传送出去。结论就是 sendfile on; 开启时,tcp_nopush 和 tcp_nodelay 都是 on 是可以的。
    tcp_nodelay on;
 
    #日志格式设定
    log_format  main  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
    ‘$status $body_bytes_sent “$http_referer” ‘
    ‘”$http_user_agent” “$http_x_forwarded_for”‘;
    #定义访问日志,设置为 off 可以关闭日志,提高性能
    access_log /var/log/nginx/access.log main;
 
 
    #连接超时时间,单位是秒
    keepalive_timeout 120;
 
    #读取 HTTP 头部的超时时间,默认值 60。客户端与服务器建立连接后将开始接收 HTTP 头部,在这个过程中,如果在一个时间间隔(超时时间)内没有读取到客户端发来的字节,则认为超时,并向客户端返回 408 (“Request timed out”) 响应。
    client_header_timeout 60;
 
    #默认值 60。与 client_header_timeout 相似,只是这个超时时间只在读取 HTTP 包体时才有效。
    client_body_timeout 10;
 
    #发送响应的超时时间,默认值 60。即 Nginx 服务器向客户端发送了数据包,但客户端一直没有去接收这个数据包。如果某个连接超过 send_timeout 定义的超时时间,那么 Nginx 将会关闭这个连接。
    send_timeout 60;
 
    #连接超时后将通过向客户端发送 RST 包来直接重置连接。这个选项打开后,Nginx 会在某个连接超时后,不是使用正常情形下的四次握手关闭 TCP 连接,而是直接向用户发送 RST 重置包,不再等待用户的应答,直接释放 Nginx 服务器上关于这个套接字使用的所有缓存(如 TCP 滑动窗口)。相比正常的关闭方式,它使得服务器避免产生许多处于 FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT 状态的 TCP 连接。注意,使用 RST 重置包关闭连接会带来一些问题,默认情况下不会开启。
    reset_timedout_connection off;
 
    #要限制连接,必须先有一个容器对连接进行计数,”zone=” 是给它一个名字,可以随便叫,这个名字要跟下面的 limit_conn 一致。$binary_remote_addr 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话。
    limit_conn_zone $binary_remote_addr zone=addr:5m;
 
    #给定的 key 设置最大连接数。这里 key 是 addr,我们设置的值是 100,也就是说我们允许每一个 IP 地址最多同时打开有 100 个连接。
    limit_conn addr 100;
 
    #对每个连接限速 100k。这如果一个 IP 允许两个并发连接,那么这个 IP 就是限速 200K。
    limit_rate 100k;
 
    #include 是一个在当前文件中包含另一个文件内容的指令。这里我们使用它来加载文件扩展名与文件类型映射表。nginx 根据映射关系,设置 http 请求响应头的 Content-Type 值。当在映射表找不到时,使用 nginx.conf 中 default-type 指定的默认值。
    include /etc/nginx/mime.types;
 
    #设置文件使用的默认的 MIME-type
    default_type text/html;
 
    #默认编码
    charset UTF-8;
 
    #该模块可以读取预先压缩的 gz 文件,这样可以减少每次请求进行 gzip 压缩的 CPU 资源消耗。该模块启用后,nginx 首先检查是否存在请求静态文件的 gz 结尾的文件,如果有则直接返回该 gz 文件内容。
    gzip_static off; 
 
    #开启 gzip 压缩。
    gzip on;
 
    # 禁用客户端为 IE6 时的 gzip 功能。
    gzip_disable “msie6”;
 
    #Nginx 做为反向代理的时候启用。可选值:off|expired|no-cache|no-sotre|private|no_last_modified|no_etag|auth|any
    gzip_proxied any;
 
    #设置允许压缩的页面最小字节数,页面字节数从 header 头中的 Content-Length 中进行获取。建议设置成大于 1k 的字节数,小于 1k 可能会越压越大。
    gzip_min_length 1024;
 
    #设置数据的压缩等级。这个等级可以是 1 - 9 之间的任意数值,9 是最慢但是压缩比最大的。
    gzip_comp_level 5;
 
    #设置系统获取几个单位的缓存用于存储 gzip 的压缩结果数据流。例如 4 4k 代表以 4k 为单位,按照原始数据大小以 4k 为单位的 4 倍申请内存。如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储 gzip 压缩结果。
    gzip_buffers 4 16k;
 
    #设置需要压缩的数据格式。Nginx 默认只对 text/html 进行压缩。
    gzip_types text/plain text/css application/json application/x-Javascript text/xml application/xml application/xml+rss text/javascript;
 
    #为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。
    open_file_cache max=65535 inactive=30s;
 
    #多长时间检查一次缓存的有效信息
    open_file_cache_valid 30s;
 
    #open_file_cache 指令中的 inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的。出现 Last-Modified 不变的情况,就是因为当 nginx 对一个静态文件缓存后,如果 30s 内还在访问它,那么它的缓存就一直存在,直到 30s 内你不访问了为止。
    open_file_cache_min_uses 2;
    #是否记录 cache 错误
    open_file_cache_errors on;
 
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

4、SERVER 模块

 server {
    #监听端口,nginx 会根据请求的 HOST 来决定使用哪个 SERVER 段的配置。如果没有匹配的 server_name,则默认使用配置文件中第一个。加上 default_server 则可以以指定没有匹配时的默认规则。
    #listen 80;
    listen 80 default_server;
 
    #域名可以有多个,用空格隔开
    server_name www.test.com test.com;
    root /user/share/nginx/html/test;
 
    #404 页面配置
    error_page  404  /404.html;
 
    #配置 ssl,有需要时开启。
    ssl on;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
 
    location / {
        index  index.html index.php;
    }
 
    #图片缓存时间设置
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 10d;
    }
 
    #JS 和 CSS 缓存时间设置
    location ~ .*.(js|css)?$ {
        expires 1h;
    }
 
    location ~ [^/]\.php(/|$) {
        fastcgi_index  index.php;
        #开启 PATH_INFO 支持,作用就是把参数按照给定的正则表达式分割成 $fastcgi_script_name 和 $fastcgi_path_info。
        #例如:请求 index.php/id/1 不加此行配置时,fastcgi_script_name 是 /index.php/id/1,fastcgi_path_info 是空。
        #加上之后,fastcgi_script_name 是 index.php,fastcgi_path_info 是 /id/1
        fastcgi_split_path_info ^(.+\.php)(.*)$;
 
        #此值即是 PHP 中 $_SERVER[‘SCRIPT_FILENAME’] 的值
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO              $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
 
        #指定 FastCGI 服务器监听端口与地址。须和 PHP-FPM 的设置相同。
        #fastcgi_pass  127.0.0.1:9000;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        include fastcgi_params;
    }
}

2、常见的方式
1. 让木马上传后不能执行:针对上传目录,在 nginx 配置文件中加入配置,使此目录无法解析 php
2. 让木马执行后看不到非网站目录文件:取消 php-fpm 运行账户对于其他目录的读取权限
3. 木马执行后命令不能执行:取消 php-fpm 账户对于 sh 的执行权限
4. 命令执行后权限不能过高:php-fpm 账户不要用 root 或者加入 root 组

3、具体的配置
1、禁止 php 文件的访问及执行
 location ~  /(attachments|upload)/.*\.(php|php5)?$ {
    deny all;

2、禁止 IP 的访问

 // 禁止的写法
deny 10.0.0.0/24;
 
// 允许的写法
allow 10.0.0.0/24; 
deny all; 

3、根据用户的真实 IP 做连接限制

## 这里取得原始用户的 IP 地址
map $http_x_forwarded_for  $clientRealIp {
    “”  $remote_addr;
    ~^(?P<firstAddr>[0-9\.]+),?.*$    $firstAddr;
}
 
## 针对原始用户 IP 地址做限制
limit_conn_zone $clientRealIp zone=TotalConnLimitZone:20m ;
limit_conn  TotalConnLimitZone  50;
limit_conn_log_level notice;
 
## 针对原始用户 IP 地址做限制
limit_req_zone $clientRealIp zone=ConnLimitZone:20m  rate=10r/s;
#limit_req zone=ConnLimitZone burst=10 nodelay;
limit_req_log_level notice;
 
## 具体服务器配置
server {
    listen  80;
    location ~ \.php$ {
                ## 最多 5 个排队,由于每秒处理 10 个请求 + 5 个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了
        limit_req zone=ConnLimitZone burst=5 nodelay;
 
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        include fastcgi_params;
    } 
 
}

4、经过多层 CDN 之后取得原始用户的 IP 地址,nginx 配置

map $http_x_forwarded_for  $clientRealIp {
        ## 没有通过代理,直接用 remote_addr
    “”  $remote_addr; 
        ## 用正则匹配,从 x_forwarded_for 中取得用户的原始 IP
        ## 例如  X-Forwarded-For: 202.123.123.11, 208.22.22.234, 192.168.2.100,…
        ## 这里第一个 202.123.123.11 是用户的真实 IP,后面其它都是经过的 CDN 服务器
    ~^(?P<firstAddr>[0-9\.]+),?.*$    $firstAddr;
}
 
## 通过 map 指令,我们为 nginx 创建了一个变量 $clientRealIp,这个就是 原始用户的真实 IP 地址,
## 不论用户是直接访问,还是通过一串 CDN 之后的访问,我们都能取得正确的原始 IP 地址

5、隐藏版本信息

server_tokens  off;
proxy_hide_header        X-Powered-By;
// 或者编译的时候修改源代码

6、禁用非必要的方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return    444;
}

7、禁用扩展名

location ~* .(txt|doc|sql|gz|svn|git)$ {
  deny all;
}

8、合理配置响应头
add_header  Strict-Transport-Security  “max-age=31536000”;
add_header  X-Frame-Options  deny;
add_header  X-Content-Type-Options  nosniff;
add_header  Content-Security-Policy  “default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ https://a.disquscdn.com; img-src ‘self’ data: https://www.google-analytics.com; style-src ‘self’ ‘unsafe-inline’; frame-src https://disqus.com”;

Strict-Transport-Security(简称为 HSTS)可以告诉浏览器,在指定的 max-age 内,始终通过 HTTPS 访问

X-Frame-Options 用来指定此网页是否允许被 iframe 嵌套,deny 就是不允许任何嵌套发生

9、拒绝一些 User-Agents

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
    return 403;
}

10、防止图片盗链

valid_referers blocked www.example.com example.com;
if ($invalid_referer) {
    rewrite ^/images/uploads.*\.(gif|jpg|jpeg|png)$ http://www.examples.com/banned.jpg last
}

11、控制缓冲区溢出攻击

client_body_buffer_size  1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
 
client_body_timeout  10;
client_header_timeout 10;
keepalive_timeout    5 5;
send_timeout          10;

解释说明

1、client_body_buffer_size 1k-(默认 8k 或 16k)这个指令可以指定连接请求实体的缓冲区大小。如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。
2、client_header_buffer_size 1k- 指令指定客户端请求头部的缓冲区大小。绝大多数情况下一个请求头不会大于 1k,不过如果有来自于 wap 客户端的较大的 cookie 它可能会大于 1k,Nginx 将分配给它一个更大的缓冲区,这个值可以在 large_client_header_buffers 里面设置。
3、client_max_body_size 1k- 指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的 Content-Length 字段。如果请求大于指定的值,客户端将收到一个”Request Entity Too Large”(413)错误。记住,浏览器并不知道怎样显示这个错误。
4、large_client_header_buffers- 指定客户端一些比较大的请求头使用的缓冲区数量和大小。请求字段不能大于一个缓冲区大小,如果客户端发送一个比较大的头,nginx 将返回”Request URI too large”(414)

1、client_body_timeout 10;- 指令指定读取请求实体的超时时间。这里的超时是指一个请求实体没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx 将返回一个”Request time out”(408)错误。
2、client_header_timeout 10;- 指令指定读取客户端请求头标题的超时时间。这里的超时是指一个请求头没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx 将返回一个”Request time out”(408)错误。
3、keepalive_timeout 5 5; – 参数的第一个值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接。参数的第二个值(可选)指定了应答头中 Keep-Alive: timeout=time 的 time 值,这个值可以使一些浏览器知道什么时候关闭连接,以便服务器不用重复关闭,如果不指定这个参数,nginx 不会在应答头中发送 Keep-Alive 信息。(但这并不是指怎样将一个连接“Keep-Alive”)参数的这两个值可以不相同。
4、send_timeout 10; 指令指定了发送给客户端应答后的超时时间,Timeout 是指没有进入完整 established 状态,只完成了两次握手,如果超过这个时间客户端没有任何响应,nginx 将关闭连接。

12、控制并发连接

limit_zone slimits $binary_remote_addr 5m;
limit_conn slimits 5;

13、sysctl.conf 配置

# Avoid a smurf attack
net.ipv4.icmp_echo_ignore_broadcasts = 1
 
# Turn on protection for bad icmp error messages
net.ipv4.icmp_ignore_bogus_error_responses = 1
 
# Turn on syncookies for SYN flood attack protection
net.ipv4.tcp_syncookies = 1
 
# Turn on and log spoofed, source routed, and redirect packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
 
# No source routed packets here
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
 
# Turn on reverse path filtering
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
 
# Make sure no one can alter the routing tables
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
 
# Don’t act as a router
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
 
# Turn on execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1
 
# Tuen IPv6
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1
 
# Optimization for port usefor LBs
# Increase system file descriptor limit
fs.file-max = 65535
 
# Allow for more PIDs (to reduce rollover problems); may break some programs 32768
kernel.pid_max = 65536
 
# Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000
 
# Increase TCP max buffer size setable using setsockopt()
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
 
# Increase Linux auto tuning TCP buffer limits
# min, default, and max number of bytes to use
# set max to at least 4MB, or higher if you use very high BDP paths
# Tcp Windows etc
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1

14、在防火墙级限制每个 IP 的连接数
/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –set
/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –update –seconds 60  –hitcount 15 -j DROP

15、限制 Nginx 连接传出

/sbin/iptables -A OUTPUT -o eth0 -m owner –uid-owner vivek -p tcp –dport 80 -m state –state NEW,ESTABLISHED  -j ACCEPT

————————————– 分割线 ————————————–

Nginx 负载均衡配置实战  http://www.linuxidc.com/Linux/2014-12/110036.htm

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

————————————– 分割线 ————————————–

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134506.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计11942字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994355
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...