nginx 文件意外结束,期待“;”或 /etc/nginx/sites-enabled/default 中的“}”:20 超过 Raspbian

nginx unexpected end of file, expecting ";" or "}" in /etc/nginx/sites-enabled/default:20 over Raspbian

我是 nginx 和 Raspberry 的新手。

我使用

安装了 nginx

sudo apt-get install

那时一切都很好。当我尝试重启nginx时问题来了,它抛出了这个错误

Job for nginx.service failed. See 'systemctl status ngins.service' and 'journaldtl -xn' for details

查了下发现问题出在下一个错误:

unexpected end of file, expecting ";" or "}" in /etc/nginx/sites-enabled/default:20

我的默认文件是:

# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
## 

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6
    listen 80;
    server_name $domain_name;
    root /var/www;
    index index.html index.htm;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;



    # Make site accessible from http://localhost/
    server_name localhost;

    location /

希望你能帮助我:)

如下更正您的 nginx 文件:

例如:

http {


       upstream api-app {
        .....................;   

        }
        ........................; 
        server {

              location / {
               ...................;
               proxy_set_header Host $host;
               proxy_cache_bypass $http_upgrade;

              }
        }

}

确保 ; 在行尾,{ ..} 正确。

因为@Thanh Nguyen Van 已经回答了。 location 必须在花括号中打开和关闭,然后是服务器端的另一个花括号

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    listen 80;
    server_name $domain_name;
    root /var/www;
    index index.html index.htm;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {

    }
}

我遇到了同样的问题。 已确认服务器块 {...} 内新添加行的末尾缺少 ; .

确保大括号和 ; 全部到位

还要确保没有意外的引号(单引号或双引号)。当我使用 Docker 并将值作为环境变量传递时,我花了一段时间才弄明白,所以它被错误地引用了。

因此,这将是一个不正确的位:

upstream backend {
    "server localhost:9000;"
}

这是正确的:

upstream backend {
    server localhost:9000;
}

我的问题是由于缺少 ; 作为命令行参数之一的一部分。

我的日志供参考:

2020/08/11 17:19:25 [emerg] 1#1: unexpected end of parameter, expecting ";" in command line
nginx: [emerg] unexpected end of parameter, expecting ";" in command line

我的错误是我从 nginx 开始 CMD 通过 docker:

CMD ["nginx", "-g", "daemon off"]

我遗漏了尾随 ;。我应该拥有的是:

CMD ["nginx", "-g", "daemon off;"]

以防万一它能帮助其他人。

我忘记在 {

之前加上 server