nginx 配置 upstream 就报错?

╰─➤  sudo nginx -t      
nginx: [emerg] "upstream" directive is not allowed here in /etc/nginx/nginx.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed
╭─pon@admini /etc/nginx  
╰─➤  cat nginx.conf                                                                                                                                                                                                                                                                                1 ↵
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}
阅读 3.7k
1 个回答

已解决,外面要加一个大大的 http,把一切包裹在里面才行

具体可见 chatGPT 的回答(已验证可靠性)


根据你提供的错误消息和 nginx.conf 的内容,发现在 /etc/nginx/nginx.conf 文件中的第一行出现了错误。

默认情况下,nginx.conf 文件应该包含一个 http 块,而 upstream 指令应该位于该块内。在你提供的配置中,缺少了 http 块,因此导致错误。

你可以尝试修改你的 nginx.conf 文件,将 upstream 块放置在正确的位置,如下所示:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
        }
    }
}

请确保在 nginx.conf 文件中的开头有一个 http 块,并将所有的配置项放在该块内部。然后重新运行 sudo nginx -t 命令,它应该会成功通过配置文件的测试。

完成后,可以使用 sudo systemctl restart nginx 命令来重新加载 Nginx 配置并启动服务。

请注意,根据你的实际需求,你可能还需要根据你的环境进行其他配置,如监听的端口、SSL/TLS 设置等。以上示例仅仅是一个基本的配置示例。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题