Nginx Reverse Proxy ohne Dateien

Nginx Reverse Proxy ohne Dateien

Ich habe eine Landingpage mit WordPress erstellt, die auf example.com gehostet wird. Ich habe eine App, die auf app.example.com unter einer externen URL läuft. Wenn ein Benutzer versucht, auf WordPress-Dateien zuzugreifen, sollte dies von example.com aus erfolgen. Wenn diese URL oder dieser Ordner nicht verfügbar ist, muss die URL maskiert werden und muss zur Remote-URL als example.com/$1 führen. Ich habe versucht, den Reverse-Proxy von Nginx zu verwenden, aber das funktioniert nicht.

location / {
    try_files $uri $uri/ /index.php?$query_string @proxy;
}

location @proxy {
    proxy_pass https://example.com/$1;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Antwort1

Es try_fileswird nur geprüft, ob tatsächlich Dateien im Dateisystem vorhanden sind. Sobald eine vorhandene Datei gefunden wird, wird diese verwendet, um eine Antwort zu senden. try_filesEs wird nicht auf HTTP-Statuscodes reagiert.

Da Sie es immer /index.phpin Ihrem Dateisystem haben, @proxywird das Ziel nie verwendet.

Sie müssen die Funktionalität implementieren, indem Sie sich in den Hook zur 404-Fehlergenerierung von WordPress einklinken und dort das Proxying durchführen.

verwandte Informationen