ASP.NET Core за обратным прокси-сервером NGINX

У меня проблема с запуском моего приложения ASP.NET Core 3 за обратным прокси-сервером NGINX. Я следую этому руководству:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.1

Я использую Let's Encrypt для своего SSL-сертификата и прокси-сервера передаю на другой компьютер в моей локальной сети. Я действительно не знаю, как исправить эту проблему. Я уже пытался защитить соединение между обратным прокси-сервером и сервером Kestrel с помощью SSL, но это все еще не работает. Любая помощь будет принята с благодарностью. Мой файл NGINX Site.conf выглядит следующим образом:

upstream dotnet {
    zone dotnet 64k;
    server 192.168.3.222:5000;
}
server {
    server_name   MyDomain.net *.MyDomain.net;
    location / {
            proxy_pass         http://dotnet;
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            access_log      /var/log/nginx/MyDomain.access.log;
            error_log       /var/log/nginx/MyDomain.error.log;
    }
    location = /favicon.ico {
            log_not_found off;
    }

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mydomain.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
if ($host = MyDomain.net) {
    return 301 https://$host$request_uri;
} # managed by Certbot


    listen        80;
    server_name   MyDomain.net;
return 404; # managed by Certbot


}

Приложение ASP.NET Core работает на другом компьютере (локальный IP-адрес: 192.168.3.222), чем обратный прокси-сервер NGINX (локальный IP-адрес: 192.168.3.111). Если я настрою обратный прокси-сервер NGINX на машине, на которой работает приложение ASP.NET Core и прокси перейдет на 127.0.0.1:5000, я смогу получить к нему доступ по локальной сети без проблем. Я также настроил Startup.cs для приема моего обратного прокси:

public void ConfigureServices(IServiceCollection services)
{
// Configure Headers. Required by Nginx RProxy
        services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHeaders =
                ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;                
            options.KnownProxies.Add(IPAddress.Parse("192.168.3.111"));
            options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("192.168.3.0"),24));
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider)
{
// Forward Headers required by Nginx RProxy
        app.UseForwardedHeaders();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
}

Если я попытаюсь получить доступ к MyDomain.net, я получу 502 Bad Gateway. Таким образом, обратный прокси-сервер не может подключиться к приложению. Пример в документации использует обратный прокси на том же компьютере, что и сервер Kestrel. Журнал ошибок NGINX выглядит следующим образом:

сбой (111: соединение отклонено) при подключении к восходящему потоку, клиент: 0.0.0.0.1, сервер: mydomain.net, запрос: "GET / HTTP/1.1", восходящий поток: "http://192.168.3.222:5000/$, хост: "mydomain.net"

Машина с сервером Kestrel разрешает входящий трафик для портов 5000 и 5001.

0 ответов

Другие вопросы по тегам