到达不等于有了答案
上一篇说请求发往某台电脑的某号门。但走到门口,并不意味着能拿到什么已经确定了。
那台电脑里文件夹很多,跑着的程序也不止一个。跟人用显示器打开东西不同,请求需要事先按规则写好它到底能拿到什么。
把这些规则写下来并实际执行的,就是 Web 服务器。从 80 号门进来的请求给这个文件夹里的文件;发到这个地址的请求转交给里面跑着的程序,再把它的回答代为送回。这样一组句子就是 Web 服务器的配置。
用得最广的是 Nginx,读作 engine-x。
如果请求从 443 号门进来
用这份证书和密钥建立加密连接
如果地址以 /api 开头
转交给里面 8000 端口上跑着的后端
否则
直接把这个文件夹里的文件给出去为什么要往里面转交
接下请求、交给里面的程序、再把答案代为送回,这种方式叫反向代理。名字唬人,做的事是居间转交。
为什么不直接应答而要居间?后端程序通常跑在 8000 这样的内部端口上,并不对外开放。对外只留 443 一道门,在门后按地址分流,管理起来更简单。
有了这个结构,一台服务器就能跑多个服务。地址以 /api 开头的去后端,其余的去画面文件。这和上一篇讲的用子域名分流是同一件事,只是改用路径来分。
HTTPS 落在这一层

HTTP 传输的内容是明文流动的,中间有人看就全看到了。HTTPS 会把内容加密后发送,地址栏的锁形图标就是标志。
加密需要证书和密钥。证书是由第三方担保「这个域名确实属于这台服务器」的文件,密钥是加密时用的秘密值。两者都以文件形式放在服务器上。
从哪里读这些文件、用在哪些连接上,写的地方正是 Web 服务器配置。所以 HTTPS 不是一门单独的技术,而是这一层里的配置项。
证书有有效期,过期后浏览器会报警。如今自动续期是常态,但续期悄悄失败、直到到期那天才爆出来的事仍然常见。
用了部署服务为什么还要懂

用 Vercel 或 Railway 这类部署服务,几乎不需要直接碰这些配置。连上仓库,证书签发和续期都替你做了。
仍然要懂的理由有两个。一是自己租服务器上线时,这一整层就全归你了。二是出问题时你得能分清是哪一层。
看到 502 或 504,多半就是这一层。门房活着并在应答,而里面的程序不回应或回应太慢。这跟页面根本打不开是不同的原因。上一篇的三处都查过还是不行,就看这里。
| 症状 | 通常意味着 | 查哪里 |
|---|---|---|
| 完全连不上 | 请求根本没到达 | DNS · 服务器存活 · 端口 |
| 502 | 里面的程序挂了 | 后端进程 |
| 504 | 里面回应太慢 | 后端处理耗时 |
| 证书告警 | 过期或域名不匹配 | 续期配置 |
