手动编译安装宝塔nginx

手动编译安装宝塔nginx,以扩展一些其它模块,比如secure_link模块。

进入宝塔面板的安装文件夹: 打开终端,进入宝塔面板的安装目录,通常路径为 /www/server/panel/install/

cd  /www/server/panel/install/
wget http://download.bt.cn/install/0/nginx.sh

vim nginx.sh

在 nginx.sh 文件中,找到用于配置编译选项的部分(通常是以 ./configure 开头的行)。在该行的末尾添加:

--with-http_secure_link_module

以启用 secure_link 模块。

执行:

bash nginx.sh install 1.24

运行以下命令查看编译是否成功:

/www/server/nginx/sbin/nginx -V

高并发场景下的nginx优化

以nginx分发hls直播切片为例,对nginx高并发进行优化设置。

以下示例是nginx反代hls直播切片,每个m3u8包含5个ts切片,每个ts切片市场6s左右。本人使用的是4核8G的vps。

  1. worker_connections

来自deepseek的说法,针对不同配置worker_connections的建议值:

参数项2核4G VPS4核8G VPS依据
worker_processes2(匹配核心数)4(匹配核心数)
worker_connections12288(2核×6144)24576(4核×6144)
tcp_mem6M 8M 10M(保守内存分配)8M 12M 16M(更高内存支持)
文件缓存(open_file_cache)max=20000(减少内存占用)max=40000(利用更大内存缓存更多文件)

2. worker_rlimit_nofile

依据:需与系统级文件描述符限制(fs.file-max)一致,避免因文件句柄耗尽导致服务中断。

取值逻辑:

2核4G:100000(预留内存余量)

4核8G:200000(更大内存允许更高上限

下面的优化,将以2核4G为例。

3. 系统内核优化 (/etc/sysctl.conf)

# 连接队列优化
net.core.somaxconn = 16384       # 监听队列长度(2核建议值)
net.ipv4.tcp_max_syn_backlog = 32768
net.core.netdev_max_backlog = 32768  # 与tcp_max_syn_backlog保持对齐

# TIME-WAIT优化
net.ipv4.tcp_tw_reuse = 1        # 快速复用TIME-WAIT连接
net.ipv4.tcp_fin_timeout = 30    # 缩短FIN超时

# 内存缓冲区
net.ipv4.tcp_rmem = 4096 87380 6m       # 2核4G内存保守分配
net.ipv4.tcp_wmem = 4096 16384 6m
net.ipv4.tcp_mem = 6m 8m 10m            # 按4G内存的15%分配

# 连接管理
net.ipv4.tcp_max_tw_buckets = 100000    # 控制TIME-WAIT总量
net.ipv4.tcp_keepalive_time = 300

# 文件描述符
fs.file-max = 1048576          # 系统级总限制

执行命令使修改生效:

sudo sysctl -p

4. 用户资源限制 (/etc/security/limits.conf)

# Nginx运行用户(宝塔默认为www)
www soft nofile 131072
www hard nofile 262144

# 全局后备设置
* soft nofile 65535
* hard nofile 131072

6. 针对timeout的优化

优化连接超时时间,以防止长时间占用连接让vps资源耗尽。

http {
    # 请求头超时(默认60s)
    client_header_timeout 10s;    # 建议值:5~15秒

    # 请求体超时(默认60s)
    client_body_timeout 10s;      # 建议值:5~15秒(HLS无请求体,可缩短)

    # 发送响应超时(默认60s)
    send_timeout 20s;            # 建议值:20~60秒

    # 超时后重置连接(默认off)
    reset_timedout_connection on; # 强制开启
}

7. keepalive_requests

定义:单个 TCP 连接最多允许处理多少个 HTTP 请求,超过后强制关闭连接。

本质:控制连接的复用次数(生命周期内的总请求数)。

类比:类似于“一根电话线最多允许通话1000次,之后必须换新线”。

keepalive_requests 5000;     # 单个连接最多处理500个请求

8. 启用 HTTP/2

多路复用特性可显著减少 TCP 连接数,降低对 keepalive 配置的依赖:

listen 443 ssl http2;

keepalive_timeout:在HTTP/2中仍有效,但仅在连接完全空闲时触发。

keepalive_requests:在HTTP/2中通常被忽略,连接生命周期由协议自身管理。

如果还套了cloudflare CDN,还可以考虑不适用SSL以节省服务器开销,使用reuseport:

listen 80 reuseport;  # Linux 3.9+ 端口复用提升性能
server_name _;

9. limit_conn并发连接数优化

limit_conn_zone $binary_remote_addr zone=addr:10m;  # 定义共享内存区(10MB)存储IP连接状态
limit_conn addr 6;  # 每个IP最多允许8个并发TCP连接

limit_conn_zone用于定义共享内存区域来存储连接状态,这里用$binary_remote_addr作为键,表示客户端的IP地址。zone=addr:10m分配了10MB的内存空间。limit_conn addr 8则是限制每个IP同时活跃的连接数为8。这里的“连接数”指的是同一时间的TCP连接,而不是请求数。每个HTTP请求可能复用同一个连接(在keepalive开启的情况下),但HLS的情况下,由于需要不断获取m3u8和ts,可能会有多个并发连接。

连接数估算
单播放器连接数:通常为 1(m3u8) + N(并行ts下载)。

例如:若播放器并行下载2个 ts 切片,则占用 1+2=3 个连接。

IP连接上限:若 limit_conn addr 6,则单个IP最多支持约 6/3=2 个播放器。

最后要重启nginx使配置生效:

# 根据系统服务管理工具选择命令
systemctl restart nginx    # Systemd

配置示例:

server
{
    listen 80 reuseport;
    server_name www.168itw.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/www.168itw.com;
    
    client_header_timeout 10; # 客户端请求头超时
    client_body_timeout 10; # 客户端请求体超时
    send_timeout 15; # 响应超时时间
    reset_timedout_connection on; # 超时后重置连接
    
    keepalive_timeout 10; # 保持连接的超时时间
    keepalive_requests 5000;     # 单个连接最多处理5000个请求
    
    # 限制单个IP的并发连接数
    limit_conn perip 6; # 每个IP最多6个连接
}

其中:

    keepalive_requests 5000;     # 单个连接最多处理5000个请求

# 限制单个IP的并发连接数
limit_conn perip 6; # 每个IP最多6个连接

这是限制IP连接请求的,在后端服务器上可以不用设置。

当 Nginx 作为反向代理时:

  • 客户端到 Nginx 的连接:由客户端行为或 Nginx 的 keepalive_timeout 控制。
  • Nginx 到后端 的连接:由 proxy_set_header Connection 和 keepalive 配置控制。

反代服务器配置

如果反代服务器需要高频繁高并发的与后端服务器通信,可以使用HTTP/1.1 keepalive连接复用。

nginx的http块中配置upstream backend,以连接复用:

    upstream backend {
        server backendserver.168itw.com;
        keepalive 1000;
    }

反代配置:

#PROXY-START/

location /
{
    proxy_pass http://backend;
    proxy_set_header Host backendserver.168itw.com;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_http_version 1.1;      # 强制使用 HTTP/1.1
    proxy_set_header Connection "";  # 清除 Connection 头
    proxy_connect_timeout 5s;   # 与后端建立TCP连接的超时时间(建议5-10秒)
    proxy_send_timeout 10s;     # 向后端发送请求数据的超时时间(建议10-15秒)
    proxy_read_timeout 10s;     # 从后端读取响应数据的超时时间(建议15-30秒)
    # proxy_hide_header Upgrade;
    #Persistent connection related configuration

    add_header X-Cache $upstream_cache_status;

}

#PROXY-END/

10. 针对元数据的优化

        # 在 server 级别开启并定义缓存池
        # 所有 location 共享这个大小为 5000 的缓存池
        open_file_cache max=5000 inactive=30s;
        open_file_cache_errors on;
        open_file_cache_min_uses 1; # 对所有文件都生效,第一次访问即缓存

        # 针对 M3U8 文件的 location 块
        location ~ \.m3u8$ {
            # 关键:为 M3U8 设置一个很短的有效性检查周期
            # 比如切片时长是 5s,这里就设置为 5s
            open_file_cache_valid 5s;

            add_header Cache-Control no-cache;
        }

        # 针对 TS 文件的 location 块
        location ~ \.ts$ {
            # 关键:为 TS 设置一个非常长的有效性检查周期
            # 因为 TS 文件一旦生成就不会改变,没必要频繁检查
            # 设置为 300s 小时甚至更长,可以极大地减少不必要的系统调用
            open_file_cache_valid 300s;
        }

几款开源可自建的笔记/知识管理系统

平时用notion比较多,但是也想自己搭建一个属于自己的笔记管理系统,用来替代notion。收集了几款市面上,或者GitHub上star数比较多的笔记/知识管理系统。

1、Obsidian黑曜石

https://obsidian.md

很好很强大, 应该说非常强大,使用人数也非常多,但是入门有点难度,有些地方不太符合中国人的使用习惯。

2、思源笔记

https://b3log.org/siyuan/?lang=cn

开源,支持Windows、MacOS、Linux、Android、iOS众多客户端,可自建WebDAV和S3来实现同步,非常符合中国人使用习惯。

3、AppFlowy

https://github.com/AppFlowy-IO/AppFlowy

GitHub上近8万star,应该说非常成熟了,界面跟notion非常像,“The Open Source Alternative To Notion”

4、AFFiNE

https://github.com/toeverything/AFFiNE

GitHub 4万多star,There can be more than Notion and Miro.

5、Trilium

https://github.com/zadam/trilium

GitHub 3万star。

6、NotionNext

https://github.com/tangly1024/NotionNext

使用 NextJS + Notion API 实现的,支持多种部署方案的静态博客,无需服务器、零门槛搭建网站,为Notion和所有创作者设计。

7、memos

https://github.com/usememos/memos

GitHub 4万star,一款非常轻量简洁的笔记系统,可以docker部署,近来非常受大众喜欢。

Linux安装ffmpeg、N_m3u8DL-RE推流mpd

根据你的服务器架构选择,下面以 Linux 64 为例

sudo apt update
sudo apt install ffmpeg

mkdir stream
cd stream
wget https://github.com/nilaoda/N_m3u8DL-RE/releases/download/v0.3.0-beta/N_m3u8DL-RE_v0.3.0-beta_linux-x64_20241203.tar.gz
tar -zxvf N_m3u8DL-RE_v0.3.0-beta_linux-x64_20241203.tar.gz

wget https://github.com/shaka-project/shaka-packager/releases/download/v3.4.1/packager-linux-x64

chmod +x N_m3u8DL-RE packager-linux-x64

推流:

RE_LIVE_PIPE_OPTIONS="-c copy -f hls -hls_time 6 -hls_list_size 5 -hls_flags delete_segments+append_list jade.m3u8" ./N_m3u8DL-RE https://168itw.com/J --key "111:222" --concurrent-download true --append-url-params true --live-keep-segments false --del-after-done true --select-video best --select-audio all --use-shaka-packager true --mp4-real-time-decryption true --decryption-binary-path "./packager-linux-x64" --ui-language "zh-CN" --live-pipe-mux

香港汇丰银行购买货币基金

持有香港汇丰卓越理财hsbc premier账户10多年了,为了维持100W的账户余额,以前是买的客户经理推荐的一些基金,一直都是亏损,前后估计亏了20多万港币。

前段时间看到一个博主推荐的一个方法通过香港汇丰购买货币基金(代码U62931),年化利息也有5%左右,自己试了下确实也行,记录一下。因为不能直接购买,所以稍微有一点曲折。

先购买U63135,汇丰环球投资基金,超短期债券(pc类-美元-累计),app上能看到持仓以后,点转换,选择转到u62931即可。

时效,一共需要5个交易日(注意是美股交易日,如果港股交易、美股休市,这样不算交易日,如果港股休市、美股开市,不确定,但是我估计可能也不算交易日)

d1,申购短债U63135,以d1净值确认买入短债U63135

d2,中午可能可以看到持仓,可以选择转换,以d2净值确认卖出短债U63135

d3,空闲

d4,空闲

d5,以d5净值买入货基U62931,晚上app可见货基U62931持仓。

费用,申购短债U63135费用0,转换货基u62931费用0,需要承担一天短债U63135的波动(这个超短债走势非常稳,大概率是上涨,跌也是小小跌。)

继续阅读

新入手VPS后需要的操作

趁着黑5,又买了几台新的vps,虽然今年黑5整体折扣都很一般,没有往年大。

记录一下我新入手vps后,常用的一些操作。这里是以建站、跑项目为例,vps用处不同可能操作也不一样。

一、DD纯净debian系统

这里根据自己需要看是否要dd,低配置的小鸡我一般会dd,配置高IPv4、v6双栈的vps,我一般也不dd。

然后执行apt update。

二、开启bbr加速

三、安装宝塔/aapanel,安装nginx、php、mysql等

根据自己需要选择是否安装aapanel等面板程序。如果你的网站需要用到防盗链鉴权,还需要给nginx编译编译secure_link模块。

四、设置nginx使其获取到访客真实IP

我喜欢套cloudflare,所以有必要从cloudflare获取访客真实IP。

五、nginx屏蔽censys等爬虫

六、防止各种日志log占满硬盘空间

docker设置参考:https://www.168itw.com/tech/docker-log-opts/

其它设置:https://www.168itw.com/tech/mysql-bin/

七、添加cloudflare防火墙规则

添加网站套上cloudflare后,及时给网站加上cloudflare防火墙,以阻止海量的恶意爬虫。

常用免费指纹浏览器

市面上的指纹浏览器太多了,整理一些知名度相对较高(意味着相对安全?)的指纹浏览器。这里说的免费,是指提供一定数量的免费环境(最少2个)。

1、AdsPower

免费环境:2
公司所在地:新加坡

AdsPower应该是市面上知名度最高的指纹浏览器吧。

2、Dolphin Anty

免费环境:10

公司所在地:塞浦路斯

dolphin anty本人使用下来非常顺手,也是使用过的指纹浏览器中,唯一一个同时支持Windows、MacOS和Linux的。缺点就是免费用户关闭窗口后,chrome浏览器环境中的插件就会丢失,每次都需要重新安装。

3、比特浏览器

免费环境:10

公司所在地:中国北京

同时支持Windows和MacOS

4、Hubstudio

免费环境:不限环境数,但是限制每天打开20次

公司所在地:中国?

其它的还有:gologin(无免费计划)、ClonBrowser(支持MacOS,免费环境2)、Maskfog(支持MacOS、免费环境20)、Incogniton(支持MacOS、免费环境3)、MoreLogin(支持MacOS、免费环境2)、阿拉鱼等等。

Github上也有开源的免费指纹浏览器,比如VirtualBrowser:https://github.com/Virtual-Browser/VirtualBrowser

关于ovh各个站点/各地区账号区别

OVH的站点众多,很多人上来就会迷糊了。。。其实主要有以下区别:

  1. OVH的world主站,应该是OVH Canada在运营
  2. OVH US是一个单独的brand,由OVH US单独运营,和OVH world的账户不通用. OVH US 经常会有很好的sale和 best value 出现,因此注册一个OVH US 的账号还是很有必要的. OVH US的账号可以买OVH全球的服务器,除了亚洲dd(新加坡和悉尼)
  3. OVH.ie, 国人最喜欢的欧洲站点,好搞免税
  4. OVH.com/fr, OVH的大本营,经常会有很好的sale出现,但是是法语
  5. IE区现在明着会拒绝国人的,注册账号时没有中国大陆,可以购买别人的老号,但是有封号风险。

Hostloc上很多人喜欢去注册ovh.ie然后搞免税. 如果没有任何sale的话,全球任何一个站点,不论是美元计费还是欧元计费,基本价格都是一样的. 所以正常购买的话,直接买world站的服务器就好了,还不需要搞免税. 但是可能会需要验证身份, 这个对于正规做网站的公司和个人来说没有什么影响.

OVH的欧洲账户直接购买就可以了,不需要验证账户。但是默认都有VAT的存在,需要提交身份认证搞免税. 其实我个人觉得不如在world主站买就好了。

继续阅读

关于HSBC HK信用卡消费、还款及换汇

香港汇丰Pulse银联双币钻石卡,内地绑定云闪付,或者apple pay消费可以直接消费人民币,且有奖赏钱(返现),记录一下遇到的还款、换汇等问题。

  1. Pulse是一张双币卡:港币和人民币。内地消费人民币直接以人民币入账、其它币种消费都会换算成港币入账。
  2. Pulse信用卡首2年免年费,快产生年费的时候,可以通过app或者电话继续申请免年费,每次申请可以再免2年。
  3. 香港汇丰的CNH(离岸人民币)和CNY(在岸人民币)是一个意思。hsbc hk信用卡账单中的CNY,实际上是指离岸人民币。
  4. 香港汇丰的汇率非常坑,所以还款人民币可以用ibkr或者华泰张乐全球通来兑换CNH,汇率好很多,兑换的CNH可以直接出金到hsbc hk的银行账户。
  5. 华泰换汇后的资金可用但是不可马上出金,需要等到下一个工作日。
  6. 华泰张乐全球通通过FPS出金CNH到hsbc hk免费,但是要注意姓名拼音中间的空格,跟hsbc hk银行账户完全一致。
  7. 华泰FPS出金在工作日上午11点前提交当天处理,11点后要等到第二个工作日。
  8. HSBC HK信用卡的账单日及最后还款日,我在app上找了半天也没找到。最后在在线客服的指引下才发现。打开app – 右上角人形图标 – 我的文件 – 电子结单和电子通知书,点进去后选择对应的信用卡账户(双币信用卡这里只会显示港币账户,但是结单里有人民币结单),就能看到每个月的账单及账单日期了但是我还是没有找到最后还款日。
  9. 实际上通过app在线客服对话框中输入“我想还信用卡账单”,就会显示信用卡的最后还款日,比如我的显示是 付款到期日:2024-09-02。也可以从关联的hsbc借记卡中查看交易记录知道是哪天扣款的。
  10. 下载安装汇丰信用卡app:Reward+,就能很清晰的看到每月消费记录及最后还款日。如果是iPhone,需要外区apple ID。
  11. 在线人工客服说,账单日和最后还款日没有固定日子,也就是说每个月都有可能不一样?不知真假。。。
  12. ibkr每月首笔出金免费。
  13. ibkr如果入金换汇后直接出金,容易被风控,可以用美元购买sgov,月底再卖了,然后换成CNH出金到hsbc hk。sgov每月月初分红,月底前卖掉没有股息税。

关于Pulse信用卡4.4%奖赏钱(即返现):

  1. 首先需要在Reward+把”最红自主奖赏“自行分配额外”奖赏钱“到“赏世界”,才能在享受内地消费2.4%奖赏钱,此处全年可获享最多额外$3,000”奖赏钱“!(即消费12.5万封顶?)。
  2. 在中国内地(人民币)或者澳门(澳门币)消费可获得2%奖赏钱,但是需要注意的是,只有通过Apple pay,或者Reward+/银联云闪付二维码(主扫或者被扫),才有2%奖赏钱。
  3. 总结就是:apple pay,Reward+二维码、云闪付二维码,三种方式的付款,能获得4.4%返现。

关于银联云闪付绑定汇丰Pulse信用卡:

如果你已经注册过云闪付,需要重新注册一个新的,且注册云闪付的手机号要跟汇丰银行预留的手机号 一致。如果你预留的手机号已经注册过云闪付,可以先在汇丰更换手机号,然后用更换后的手机号注册云闪付,等新云闪付绑定了汇丰信用卡之后,再在汇丰改回原来的手机号。新注册的云闪付切记不要实名认证,注册后直接绑定汇丰Pulse信用卡即可。