Nginx 此处不允许使用“http”指令

use*_*802 3 lua nginx

我开始并想使用 Nginx 连接到我的数据库。这是我的sites-enables / default文件:

http {
  upstream database {
   postgres_server 192.168.0.166 dbname=stardb 
                                user=username password=yourpass;
  }

  server {
    listen 80 default_server;
    listen [::]:80 default_server;

    location /ip {
      postgres_pass     database;

      postgres_query    HEAD GET  "SELECT http_host as ip FROM establishment_view where aet = 'NXS_DEV_FLO2'";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

nginx[7597]: nginx: [emerg] /etc/nginx/sites-enabled/default:17 中不允许使用“http”指令

我发现这个错误很常见,但即使查看其他帖子我也无法解决我的问题。我的文件中有这一行nginx.conf

include /etc/nginx/sites-enabled/*;
Run Code Online (Sandbox Code Playgroud)

我需要删除sites_enables/default文件中的 http 行吗?

Tar*_*ani 6

当您确实包含它时,它与粘贴匹配文件中的内容一样好。所以如果我的主要nginx.conf

http {
   line 1
   line 2;
   include sites-enabled/*.conf;
}
Run Code Online (Sandbox Code Playgroud)

并且sites-enabled/default.conf在下面

http {
   server { 
      line 3;
   }
}
Run Code Online (Sandbox Code Playgroud)

有效配置变为

http {
   line 1;
   line 2;
   http {
      server {
          line 3; 
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

现在http指令不允许在任何其他指令中使用,您可以在根级别使用它。所以错误是"http" directive is not allowed here. 您应该运行nginx -T以查看它使用的完整组合配置。

修复很简单,httpdefault文件中删除封闭的块,因为您已经在http块内