OkayStudy
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 编程

Web 服务器

二十行 ,就肯跟它说话。

Web 服务器只是一个等待请求、送回响应的程序。先用 bash 和 netcat 写一个 20 行的服务器并逐行读懂,再转到自带 HTTPS 的 Caddy。

小窗口后面的店员正在听一队访客说话(一台笔记本电脑、一部手机和一个小机器人),每位访客都拿着一张请求纸条,窗口上方有一个绕圈的箭头。
Web 就像窗口里的店员:等待,读请求,递出页面,然后再等。

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

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

它最拿得出手的是。给它一个真实,它就会、装好、在过期前续期,并把 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

一行命令把文件夹送出去

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

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

Caddy 向 申请免费证书。为此,域名的 必须指向你的机器,而且 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,按域名分流:主站交给 应用,下载用的交给一个专门提供文件的小 Caddy 容器。像上面的例子那样,每个站点多加一个块就行,也不会有第二个程序来抢端口。

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

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

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

已标记为理解

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

请选择要取消的待付款预约。每次取消都需要确认。

你所在国家的时间:

关闭