..png)
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:5000
bekomme 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_path
in angeben proxy.conf
, diesen Pfad erstellen und ihn dem Benutzer zuweisen, unter dem Nginx ausgeführt wird (in meinem Fall nginx
).