SONUB 首页 ZH English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

如何开启通知

此浏览器或网址无法使用通知。请使用支持通知的浏览器,通过安全连接访问SONUB。

如果通知被屏蔽,请在浏览器设置中允许通知。

  1. 打开地址栏旁的站点设置或浏览器的站点设置,将此网站的通知设为允许。
  2. 在设备设置中允许浏览器发送通知,并检查勿扰模式或专注模式。
  3. 返回SONUB,刷新页面,然后通过铃铛开启通知。

在iPhone或iPad上,将SONUB添加到主屏幕,从主屏幕打开后允许通知。

返回 Vibe 编程
VIBE 编程

Web 服务器

二十行 ,就肯跟它说话。

Web 不过是一个等待、送出的。为了证明这一点,我们只用 bash、 和一个做一台出来 —— 每一行你都读得懂。之后再走向 Caddy,那是连 一起带上、真正跑线上站点的服务器。

Caddy:一台仍然读得懂的真服务器

Caddy 是一个只有单个可执行文件的现代 Web 服务器。它值得紧接着 Shell 例子来学,因为它保留了同样的手感 —— 几行读得懂的配置就跑起来 —— 又解决了 Shell 版做不到的事(多人同时访问、HTTPS、按路径分流)。

它最拿得出手的是自动 HTTPS。给它一个真实域名,它就会、装好、在过期前续期,并把 http 访客转去 https。在别的服务器上,这是每隔几个月就得重来一次的杂活。

安装

install
# macOS
brew install caddy

# Ubuntu / Debian — add Caddy's own package list first (official steps)
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy

# with Docker (covered in the Docker tab): serve this folder on port 8080
docker run -p 8080:80 -v "$PWD":/usr/share/caddy caddy:2

一行命令把文件夹送出去

不需要配置文件。进到放着 index.html 的文件夹,敲一行命令就好 —— 这是把页面给同一网络里的人看的最快办法。

terminal
# serve this folder's index.html on port 8080
caddy file-server --listen :8080

# add a directory listing for folders without an index.html
caddy file-server --listen :8080 --browse

Caddyfile

要长期放着的,就写一份 Caddyfile。它就是纯文本,一个完整站点四行就够。

Caddyfile
example.com {
	root * /var/www/html
	file_server
	encode gzip zstd
}
  1. example.com {站点地址。这里写真实域名,Caddy 会自己张罗 HTTPS 证书。就算写 localhost,Caddy 也会用它自己生成的证书走 HTTPS。只想要普通的 http,就写成 http://localhost 或 :80 这样。
  2. root * /var/www/html文件在磁盘上的位置。星号表示这条规则适用于本站点的所有路径。
  3. file_server真正把那些文件送出去的一行。少了它,Caddy 会对请求什么都不给。
  4. encode gzip zstd送出前先压缩响应。就一个词,慢速网络下页面到达得明显更快。
关于那张证书

Caddy 向 Let's Encrypt 申请免费证书。为此,域名的 必须指向你的机器,而且 80 和 443 端口从外面要能连上。如果前面另有一层代理替它接下了这两个端口,验证就会失败,证书永远拿不到。这是第一次配 Caddy 时锁不变绿最常见的原因。

反向代理:把请求转交出去

大多数站点不是磁盘上的文件,而是某个在本地端口上倾听的应用程序。就是接下外部请求、转交给那个应用、再把答案送回去的服务器。一行就够。

Caddyfile
example.com {
	reverse_proxy 127.0.0.1:8080
}

files.example.com {
	root * /srv/files
	file_server browse
}

一台机器承载多个站点靠的也是它。443 端口只能由一个程序占住,于是让 Caddy 占着,它读出访客要的是哪个域名,再把每一个转给背后不同的应用。

需要掌握的命令

命令作用
caddy run在前台运行,把日志打在终端上。配置还没调好的时候,你要的就是这个。
caddy start转到后台运行并把提示符还给你。临时演示够用,正式服务器则应当作为系统服务来跑。
caddy reload不中断任何一条连接就加载新配置。改了 Caddyfile 并不需要重启。
caddy fmt --overwrite就地把文件整理成标准格式。Caddyfile 缩进不同也照样能用,但格式不对时 Caddy 会发出警告。
caddy validate什么都不启动,只检查配置有没有错。在给线上服务器 reload 之前先跑一遍。
这个站点正是这样跑的

在 SONUB 的服务器上,前端的一个 Caddy 占住 80 和 443,按域名分流:主站交给 Laravel 应用,下载用的子域名交给一个专门提供文件的小 Caddy 容器。像上面的例子那样,每个站点多加一个块就行,也不会有第二个程序来抢端口。

这一栏由你自己标记,这里不打分。

要把这一阶段标记为已理解吗?

目前还不能取消,请在真正理解后再标记。

已标记为理解

这一栏由你自己标记,这里不打分。