Bearbeiten von nginx/discourse.conf
Ich gehe davon aus, dass alle Änderungen an discourse.conf innerhalb des Containers ohnehin durch einen Rebuild rückgängig gemacht werden.
Um Änderungen beizubehalten, müssen Sie sie irgendwie in Ihre Container-Konfiguration aufnehmen – z. B. in web_only.yml:
# [… ]
## Denken Sie daran, dies ist YAML-Syntax – Sie können nur einen Block mit einem Namen haben
run:
- exec: echo "Beginn benutzerdefinierter Befehle"
# [… ]
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_x_real_ip
global: true
# [… ]
Debuggen einer Discourse-Installation in einem Unterordner
Bei einer Discourse-Installation in einem Unterordner läuft ein Aufruf an Discourse wie folgt ab:
example.org/forum → [Externer Proxy für example.org] → /pfad-zu-discourse/discourse/shared/web-only/nginx.http.sock → [Nginx im Discourse-Webcontainer]
Wenn also ein Fehler auftritt, müssen wir ihn zuerst lokalisieren:
- Externer Proxy
- Nginx im Discourse-Container
- Discourse selbst
Externer Proxy
- Rufen Sie ihn in einem Browser auf und prüfen Sie das Ergebnis.
- Überprüfen Sie die Fehlerprotokolle des externen Proxys.
Nginx im Discourse-Container
- Melden Sie sich per SSH bei Ihrem Webserver an.
- Stellen Sie über
curleine direkte Verbindung zum Socket her. - Debuggen Sie die
curl-Ausgabe und die Protokolle vonNginx in Discourse.
Wichtig: Verwenden Sie die http-URL – und nicht https.
curl -I --unix-socket /pfad-zu-discourse/discourse/shared/web-only/nginx.http.sock http://www.example.org/forum/
Wenn dies funktioniert, versuchen Sie einen echten Aufruf wie:
curl --unix-socket /pfad-zu-discourse/discourse/shared/web-only/nginx.http.sock \
-H "user-agent: Chrome/88.0.4324.182" \
-H "Accept-Encoding: gzip" \
http://www.example.org/forum/t/test-thread/12345 --output test-encoded.html.gz