通过VPS部署Django网站启动Nginx遇意外}错误求助
你遇到的unexpected "}"错误其实不是因为真的存在多余大括号,而是配置文件里的几处语法错误导致Nginx解析配置时出现混乱,才误报了大括号相关的问题。咱们来逐个排查并修复:
错误1:静态文件路径末尾符号错误
在location /static/块里,alias /opt/myenv/static/:这行结尾用了冒号:,但Nginx的配置语句必须以分号;结尾,这个冒号会直接打断配置解析流程。错误2:proxy_pass的URL格式错误
proxy_pass http:/127.0.0.1:8001;这里少了一个斜杠,正确的URL格式应该是http://127.0.0.1:8001;。错误3:proxy_set_header指令拼写错误
proxy_set header X-Real_IP $remote_addr;这行里的proxy_set header是错误写法,正确的指令名称是proxy_set_header;另外X-Real_IP里的下划线建议改成标准连字符X-Real-IP(虽然下划线也能生效,但遵循标准写法能避免潜在兼容性问题)。额外优化:X-Forwarded_Host的格式规范
同样,X-Forwarded_Host建议调整为标准的X-Forwarded-Host,保持HTTP头命名的一致性。
修正后的完整配置:
server { server_name 141.136.44.187; access_log off; location /static/ { alias /opt/myenv/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; add_header P3P 'CP="All DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; } }
验证配置并重启Nginx:
修改完成后,先执行sudo nginx -t测试配置文件是否合法,如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,就可以用sudo service nginx restart重启Nginx了。
内容的提问来源于stack exchange,提问作者Gexas

