Richten Sie nginx als Proxyserver für Kestrel ein (ASP.Net Core).

Richten Sie nginx als Proxyserver für Kestrel ein (ASP.Net Core).

Ich versuche, eine ASP.NET Core-Umgebung zum Hosten meiner Anwendung einzurichten, habe aber Probleme mit dem Nginx-Webserver. Wenn ich versuche, eine Verbindung zu meiner Domäne herzustellen, erhalte ich die Meldung 502 Bad Gateway. Nginx sollte einfach als Proxyserver für Kestrel ausgeführt werden.

Hierist ein Link zu der Anleitung, der ich folge. Die Konfiguration ist so ziemlich die von Microsoft vorgeschlagene Konfiguration. Ich habe nur die Variablen geändert, die für jede Umgebung unterschiedlich sind.

Die problematische Zeile steht http://aspdotnethost;am Ende der nginx.conf-Konfiguration. Wenn ich sie auskommentiere, werde ich zum Standard-WWW-Speicherort umgeleitet.

Wie funktioniert die Zeile also tatsächlich und wie kann ich es schaffen, dass sie ordnungsgemäß auf localhost:5000 umgeleitet wird?

/etc/nginx/proxy.conf

proxy_redirect          off;
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;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;

/etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    include    /etc/nginx/proxy.conf;
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
    server_tokens off;

    sendfile on;
    keepalive_timeout 29; # Adjust to the lowest possible value that makes sense for your use case.
    client_body_timeout 10; client_header_timeout 10; send_timeout 10;

    upstream aspdotnethost {
        server localhost:5000;
    }

    server {
        listen *:80;
        add_header Strict-Transport-Security max-age=15768000;
        return 301 https://$host$request_uri;
    }

    server {
        listen *:443    ssl;
        server_name     example.com *.example.com;

        #Redirects all traffic
        location / {
            proxy_pass  http://aspdotnethost;
            limit_req   zone=one burst=10;
        }
    }

}

Nginx-Konfigurationsprüfung:

[root@rs-zap353479-1 patrick]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn ich es eingebe, curl http://localhost:5000bekomme ich das HTML-Dokument zurück. Also sollte diese Komponente meiner Meinung nach in Ordnung sein.

Antwort1

Wie Eugen Rieck als Kommentar gepostet hat, musste ich einen Alias ​​hinzufügen /etc/hosts.

Als zusätzlichen Schritt muss ich das proxy_temp_pathin angeben proxy.conf, diesen Pfad erstellen und ihn dem Benutzer zuweisen, unter dem Nginx ausgeführt wird (in meinem Fall nginx).

verwandte Informationen