这段时间 apt update 一直有一个 nginx 的 ppa 报 403 1,查了一下才发现 oerdnj 维护得心累了就删了
nginx 那些魔法一样的配置我一直都没太搞懂,我自己手上的这份大概是刚开始用 lnmp.org 时自动生成的(也可能是对照着 apache 配置改的,前 LLM 时代的东西记不清了),之后就在原始版本的基础上修修补补。反正这次都要换,干脆全换了的想法就自然冒出来了
这几年我已经把全部纯前端网站和低请求量 API 都搬到 serverless 上了,nginx 剩下工作只有反代 js 或者 go 的服务以及提供较大容量的静态资产文件访问,所以迁移也不会很复杂,跟 LLM 愉快聊天再自己翻翻文档补充就转换好了,下面放出混合了各种配置的样例;
CADDYFILE
# 我为了方便编辑 markdown 把全部 \t 换成四空格了
{
auto_https off
admin off
}
https://somepath.nest.moe, https://somepath2.nest.moe {
# 我用 Cloudflare 反代,所以要放证书,前面关自动 https 也是这原因
tls /abcdefg.crt /abcdefg.key
log {
output file /logs/abcdefg.log
}
# 删掉两个会暴露 caddy 的 header,虽然暴露了也没什么大不了的,但我不喜欢
header {
-Via
-Server
X-Frame-Options DENY
X-Content-Type-Options nosniff
X-Xss-Protection 1
}
# 用 route 主要是为了强制顺序检查
## 通过这里可以看出官方 twitter monitor 后端其实是一大堆细碎的服务组装起来的,跟开源版丢一起不同
route {
handle /static/* {
root * /tmv3/apps/backend
header {
Cache-Control "public, max-age=31536000, immutable"
}
file_server
}
@twmedia {
path /media /media/*
}
handle @twmedia {
uri strip_prefix /media
reverse_proxy 127.0.0.1:11111
}
@twitterVideo {
path_regexp twitter ^/(amplify_video|ext_tw_video)/(.*)$
}
redir @twitterVideo /media/{re.twitter.1}/{re.twitter.2} 307
# 唉,v4 做到一半胎死腹中……
@wspush {
path /online/api/v4/push/*
header Connection *Upgrade*
header Upgrade websocket
}
handle @wspush {
uri replace /online/api/v4/push /api
reverse_proxy 127.0.0.1:22222
}
handle /online/api/v4/* {
reverse_proxy 127.0.0.1:33333
}
handle {
reverse_proxy 127.0.0.1:44444
}
}
}
https://anothersite.nest.moe {
root * /var/www/notfun
# 这是另一个下载站的
@apks path *.apks
header @apks Content-Type application/vnd.android.package-archive
php_fastcgi unix//run/php/php8.4-fpm.sock {
index index.php
env PHP_ADMIN_VALUE "open_basedir=/var/www/notfun:/tmp/"
}
file_server
@hidden {
path /hidden /hidden/*
}
handle @hidden {
basicauth * {
user password # 这里需要自己去转换密码,读不了 .htpasses
}
}
}
Caddy 的自动续签证书我用不上,因为 Cloudflare 跟 CDN 通信用的都是很多很多年有效期自签证书 XD
默认配置很好,很多魔法配置都可以丢了,不会响应没配置的请求,以前用 nginx 默认会响应纯 ip 的请求,然后还会带上 Cloudflare 签的证书 2,导致 ip 暴露了相当长时间,直到我另外加了一块直接返回 444
目测法盯了一段时间的 top,内存占用比 nginx 高,但又不差这点,就这样吧
注释
- Err:6 https://ppa.launchpadcontent.net/ondrej/nginx/ubuntu noble InRelease 403 Forbidden [IP: REDACTED 443] ↩
- 没限制 ip 是我的问题,但默认配置漏响应不能全怪我吧 ↩