把几个小服务放到同一台机器上
手上的小服务越来越多,一个个单独开机器实在浪费。后来索性都塞进同一台, 用一个 Nginx 做入口,按域名分流。记一下当时觉得值得记的部分。
按域名分,比按端口分省心
一开始是按端口分的,:8001、:8002 这样。问题是用起来别扭,
而且端口号得记。换成按域名分之后,每个服务一个 server 块,
互不干扰,加一个服务就是复制一份改两行。
server {
listen 443 ssl;
server_name a.example.com;
location / {
proxy_pass http://127.0.0.1:8001;
}
}
后端起在回环地址上
这一点我踩过:后端如果监听 0.0.0.0,就等于绕过了 Nginx 直接暴露在公网。
改成只绑 127.0.0.1,外面只能从 Nginx 进来,省心很多。
改完先校验再 reload
一开始改完直接 restart,结果有次配置写错,服务直接起不来。
后来改成固定两步:先 nginx -t 确认语法,再 reload。
reload 不会断开已有连接,比 restart 温和得多。
唯一要注意的是重复的 server_name:Nginx 只会打一条 warning,
不会报错,所以"校验通过"不等于没冲突。这个坑我后来是靠数日志才发现的。