You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建sites-available与sites-enabled的符号链接后,nginx.conf出现无效变量名错误(未修改过该配置文件)

创建sites-available与sites-enabled的符号链接后,nginx.conf出现无效变量名错误(未修改过该配置文件)

兄弟我太懂你这种懵圈的感觉了——明明碰都没碰nginx.conf,就加了个软链接,结果配置校验直接报错,简直离谱!不过别慌,这个报错其实是个“障眼法”,大概率不是主配置文件的问题,而是你刚链接过去的站点配置文件出了语法错误。

为啥会指向nginx.conf第61行?因为那行大概率是include /etc/nginx/sites-enabled/*.conf;——当nginx加载这个目录下的配置时,如果你的站点配置里有变量定义错误,它就会把错误溯源到include这一行,让你误以为是主配置炸了。

给你几个排查步骤,一步步来:

  • 先确认nginx.conf第61行到底是什么:
    跑这个命令看第61行附近的内容:

    sudo cat -n /etc/nginx/nginx.conf | sed -n '55,65p'
    

    不出意外的话,这行就是引入sites-enabled目录配置的语句。

  • 重点检查你刚创建软链接的那个站点配置文件:
    比如你链接的是/etc/nginx/sites-available/my-project.conf,直接打开它:

    sudo nano /etc/nginx/sites-available/my-project.conf
    

    找变量相关的代码,nginx的变量规则很严格:

    • 必须以$开头,比如$my_var,不能漏写$
    • 变量名只能包含字母、数字和下划线,不能有空格、横杠这类特殊字符,比如$my-site是错的,得改成$my_site
    • 常见错误示例:set my_var "test";(漏了$,正确写法是set $my_var "test";),或者变量名里不小心加了空格
  • 单独校验站点配置文件:
    不用每次都跑全量校验,直接单独测这个配置:

    sudo nginx -t -c /etc/nginx/sites-available/my-project.conf
    

    这样能直接定位到站点配置里的错误行,比看主配置的报错清晰多了。

  • 反向验证:
    先把sites-enabled里的那个软链接删掉,再跑sudo nginx -t,如果不报错了,那就100%实锤是那个站点配置的问题,再回去仔细抠每一行代码就行。

备注:内容来源于stack exchange,提问作者Mikey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:43:18