必须安装专用Nginx语法插件(如nginx-sublime-syntax)并配置file_name_patterns路径匹配(如"/etc/nginx/.*"),才能使server、proxy_pass等指令着色;全局绑定.conf会导致redis.conf等误高亮,且正则、变量等语义级内容本就不支持高亮,最终需依赖nginx -t验证。

装对插件才能让 server、proxy_pass 变色
Sublime 默认把 .conf 当纯文本或 INI 处理,server、upstream、proxy_pass 全是灰色——这不是你写错了,是根本没加载 Nginx 语法规则。必须装专用语法包,不是随便搜“nginx”就行:
- 首选
nginx-sublime-syntax:更新勤,支持stream、map、js_import和 1.25+ 新指令 - 备选
nginx-conf:轻量,规则少,低配机器跑得动 - 慎用
Nginx(作者 bradleyg):老牌但对新语法响应慢,server_name ~^www.(.+)$这类正则前缀可能不染色
装完别急着重启,右下角仍显示 Plain Text 是正常现象——插件只是“备好了”,还没被调用。
按路径匹配,而不是按 .conf 全局绑定
点右下角选 Nginx → Open all with current extension as… 是最常见错误:它会把 redis.conf、logrotate.conf、gitconfig 全错当成 Nginx 配置,高亮崩坏且无法恢复。
真正该做的是进 Preferences → Settings – Syntax Specific,在右侧面板粘贴类似配置:
{
"syntax": "Packages/nginx-sublime-syntax/nginx-sublime-syntax.sublime-syntax",
"file_name_patterns": [
"/etc/nginx/.*",
"/usr/local/etc/nginx/.*",
"nginx\.conf",
"sites-.*\.conf",
"conf\.d/.*\.conf"
]
}
注意:file_name_patterns 是正则,优先级高于 extensions;路径里点号要写成 .,否则 nginx.conf 匹配失败;Windows 下路径必须用正斜杠 / 或双反斜杠 \,单反斜杠如 C:wwwstatic 会导致高亮整段崩溃。
proxy_pass 高亮了,但变量和正则还是灰的?这不是 bug
proxy_pass、location、upstream 能着色,是因为它们是关键词;但 $arg_foo、$host 在 map 块里不识别,~^ 在 server_name 后也不变色——这是 Sublime 词法分析的固有边界,不是插件漏写了规则。
靠颜色判断变量拼写或正则语法是否正确,风险极高。唯一可信的验证方式只有:
-
sudo nginx -t:检查语法和路径是否存在 -
sudo nginx -T:输出合并后的完整配置,确认 include 是否生效、变量是否被展开
颜色只是辅助,nginx -t 才是权威。写完 proxy_set_header X-Real-IP $remote_addr;,别只看颜色对不对,先 -t 一把。
upstream 和 proxy_pass 搭配时容易漏掉的硬性约束
语法高亮再准,也覆盖不了 Nginx 自身的语义限制。这些坑不靠 -t 根本发现不了:
-
upstream必须定义在http{}块内,放在server{}里直接报unknown directive "upstream" -
weight=2只在默认 round-robin 模式下有效;加了ip_hash或least_conn后,weight被忽略 -
backup和down不是注释,是关键字:写成# backup无效,必须是server 127.0.0.1:8080 backup; - 每行末尾必须有分号,尤其是
upstream块最后一行,漏掉就报unexpected end of file, expecting ";"
这些规则不会体现在高亮里,也不会被 Sublime 校验——它们藏在 Nginx 的运行时解析逻辑里,只能靠 nginx -t 暴露。


















