正确建立sites-enabled软链接的核心是“只链接、不复制、不直改”,即sites-available为配置仓库(存放所有站点配置但不生效),sites-enabled为开关面板(仅存指向sites-available的软链接,nginx仅读取该目录下链接内容);创建时用sudo ln -sf源路径目标路径,禁用时删链接而非源文件,并需删除默认default链接防冲突。

正确建立 sites-enabled 软链接,核心是“只链接、不复制、不直改”,确保配置可管理、可开关、不冲突。
明确两个目录的分工
sites-available 是配置文件的“仓库”——所有写好的站点配置(如 blog.example.com、api.example.com)都放在这里,但它们默认不生效。
sites-enabled 是配置文件的“开关面板”——它本身不存真实配置,只存放指向 sites-available 中文件的软链接。Nginx 启动或重载时,只读取这个目录下的链接所指向的内容。
创建软链接的标准操作
- 先确认配置文件已存在于
/etc/nginx/sites-available/,比如:/etc/nginx/sites-available/myapp.conf - 使用
ln -sf命令创建带强制覆盖的符号链接:sudo ln -sf /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/myapp.conf - 其中
-s表示软链接,-f表示如果同名链接已存在则自动替换,避免手动删旧链再建新链 - 不要用
cp或直接编辑sites-enabled下的文件——那会破坏机制,失去“一键启停”的能力
检查与验证是否成功
- 运行
ls -l /etc/nginx/sites-enabled/,应看到类似输出:myapp.conf -> /etc/nginx/sites-available/myapp.conf
箭头右侧必须是绝对路径,且指向sites-available内真实存在的文件 - 执行
sudo nginx -t测试语法,确保没有报错 - 若提示
conflicting server name,说明多个启用的配置用了相同server_name或都监听同一端口未区分,需检查各配置中的server_name和listen
禁用某个站点只需删链接,不删源文件
- 停用站点:直接删除
sites-enabled下对应链接即可sudo rm /etc/nginx/sites-enabled/myapp.conf - 源配置仍保留在
sites-available,随时可重新链接启用 - 特别注意:默认的
default链接常驻sites-enabled,如无需默认站,建议先移除它,避免端口冲突sudo rm /etc/nginx/sites-enabled/default











