nginx反向代理后面的应用程序故障排除,因为POST / PUT请求被错误400(错误请求)回复

问题描述 投票:1回答:1

我试图在Linux上首次托管我的Angular / ASP.net core 3.1应用程序。

Nginx站在端口80上,并提供静态文件,并充当将传递到.NET / kestrel服务器的api部分的反向代理。

问题是,我在包含正文的任何​​Web API请求上都系统地收到400状态代码错误(错误请求),例如POST&PUT,但GET没问题。

我通过中间件添加了一些日志,只是看我是否能收到请求。基本上是这样的:

app.Use(async (context, next) => {
    context.Request.EnableBuffering();
    string reqBody;
    using (var reader = new StreamReader(context.Request.Body))
    {
        reqBody = await reader.ReadToEndAsync();
        context.Request.Body.Seek(0, SeekOrigin.Begin);
        ms_oLogger.Debug($"Incoming request: METHOD={context.Request.Method} PATH={context.Request.Path} BODY=\"{reqBody}\"");
    }
    await next();
});

这只是记录GET请求的内容,但对于有问题的PUT / POST请求却什么也没有出现... 我是否可以得出结论,这只是nginx问题?

我还为给定的“ / api”位置启用了nginx上的日志,但我不知道会发生什么... 我怎么知道哪个层已生成400状态代码?

EDIT1:我只用一个不良的Web API项目开始了一个空白的新项目,该项目包含一个GET和一个POST方法,只是为了检查我的应用程序是否存在问题,但仍然遇到问题。因此,我设置了新的ubuntu服务器(这次是ubuntu服务器,而不是台式机版本),现在它可以工作了!!!我比较了配置等...但无法弄清楚出了什么问题!....但是我最初的问题仍然有效:如何解决问题的出处?

EDIT2:这是我的default.conf:

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

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }

        location /fusion {
                root /opt/fichet/WebUI/NgApp;
        }

        location /fusion/api  {
               proxy_pass http://localhost:5000/api;
                error_log          /var/log/nginx/fusion_error_logs.log debug;
                access_log         /var/log/nginx/fusion_access.log;
                proxy_http_version 1.1;
                proxy_cache_bypass  $http_upgrade;
                proxy_set_header Upgrade           $http_upgrade;
                proxy_set_header Connection        "upgrade";
                proxy_set_header Host              $host;
                proxy_set_header X-Real-IP         $remote_addr;
                proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Host  $host;
                proxy_set_header X-Forwarded-Port  $server_port;
        }
}

似乎没有启用防火墙(“ sudo ufw status verbose”告诉我们它是“无效”)

asp.net-core nginx nginx-reverse-proxy
1个回答
1
投票

从nginx配置中删除这些行。

© www.soinside.com 2019 - 2024. All rights reserved.