如何解决/etc/nginx/sites-enabled/default中此处不允许使用“http”指令的问题:1

pdkcd3nj  于 2023-03-22  发布在  Nginx
关注(0)|答案(4)|浏览(322)

我按照这个step但不知何故这抛出错误。
默认配置为

http {
  upstream alert {
    # fail_timeout=0 means we always retry an upstream even if it failed
    # to return a good HTTP response

    # Unix domain servers
    server unix:/tmp/alert_1.sock fail_timeout=0;
    server unix:/tmp/alert_2.sock fail_timeout=0;
    server unix:/tmp/alert_3.sock fail_timeout=0;
    server unix:/tmp/alert_4.sock fail_timeout=0;

    # Unix domain sockets are used in this example due to their high performance,
    # but TCP/IP sockets could be used instead:
    # server 127.0.0.1:8081 fail_timeout=0;
    # server 127.0.0.1:8082 fail_timeout=0;
    # server 127.0.0.1:8083 fail_timeout=0;
    # server 127.0.0.1:8084 fail_timeout=0;
  }
  server {
    listen 80;
    client_max_body_size 4G;

    server_name myiphere;

    location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_redirect off;
      proxy_buffering off;
      proxy_pass http://alert;
    }

    location /static {
      # path for static files
      root /mylocation/static;
    }

  }
}

/etc/nginx/sites-enabled/default:1 nginx:配置文件/etc/nginx/nginx.conf测试失败

mqxuamgl

mqxuamgl1#

检查你的/etc/nginx/nginx.conf。如果你在那里打开http指令,然后再次打开它到你的sites-enabled/文件夹conf文件中,你将以嵌套的http指令结束。

rqdpfwrv

rqdpfwrv2#

我的回复晚了大约9个月,但我刚刚经历了同样的问题。
我决定加上我的回应,因为最后2个答案只暗示了解决方案,可能仍然会让一些人感到困惑。
一个更直接的答案是:
从上面的配置中删除http声明,因为它很可能已经在/etc/nginx/nginx.conf文件中定义了(您可以检查该文件以验证声明)。
因此,您的配置最终应该看起来像这样:

upstream alert {
        # fail_timeout=0 means we always retry an upstream even if it failed
        # to return a good HTTP response
    
        # Unix domain servers
        server unix:/tmp/alert_1.sock fail_timeout=0;
        server unix:/tmp/alert_2.sock fail_timeout=0;
        server unix:/tmp/alert_3.sock fail_timeout=0;
        server unix:/tmp/alert_4.sock fail_timeout=0;
    
        # Unix domain sockets are used in this example due to their high performance,
        # but TCP/IP sockets could be used instead:
        # server 127.0.0.1:8081 fail_timeout=0;
        # server 127.0.0.1:8082 fail_timeout=0;
        # server 127.0.0.1:8083 fail_timeout=0;
        # server 127.0.0.1:8084 fail_timeout=0;
      }
      server {
        listen 80;
        client_max_body_size 4G;
    
        server_name myiphere;
    
        location / {
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_redirect off;
          proxy_buffering off;
          proxy_pass http://alert;
        }
    
        location /static {
          # path for static files
          root /mylocation/static;
        }
    
      }
djmepvbi

djmepvbi3#

我和你遇到了同样的错误。我没有直接在/ect/nginx/nginx.conf中设置nginx配置,而是在/ect/nginx/nginx. conf中的http{}中设置。所以你可以删除/ect/nginx/nginx.conf并使用自己的配置代码创建一个新的/ect/nginx/nginx.conf。

fhity93d

fhity93d4#

通常nginx.conf(在linux中位于/etc/nginx/nginx.conf下)在“http”声明中包含配置文件。

由于它引用了包含在conf.d目录中的.conf文件(查看屏幕截图),因此您可以添加一个以.conf扩展名结尾的文件,并根据您的意愿命名,例如:ASyouWISH.conf.
在我的例子中,我添加了我的WebSocket配置,没有“http”声明,因为它包含在我的.conf文件中。

相关问题