Servir Discourse depuis un sous-dossier (préfixe de chemin) au lieu d'un sous-domaine

Comment modifier nginx/discourse.conf

Je suppose que toute modification de discourse.conf à l’intérieur du conteneur est annulée en effectuant une reconstruction de toute façon.

Pour conserver les modifications, vous devez les ajouter d’une manière ou d’une autre à la configuration de votre conteneur - par exemple, web_only.yml :

# [...]
## N'oubliez pas qu'il s'agit de la syntaxe YAML - vous ne pouvez avoir qu'un seul bloc avec un nom
run:
  - exec: echo "Début des commandes personnalisées"
# [...]
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: $proxy_add_x_forwarded_for
      to: $http_x_real_ip
      global: true
# [...]

Comment déboguer une installation Discourse dans un sous-dossier

Dans une installation Discourse dans un sous-dossier, un appel à Discourse se déroule comme suit :
example.org/forum[Proxy externe pour example.org]/path-to-discourse/discourse/shared/web-only/nginx.http.sock[Nginx dans le conteneur Discourse]

Donc, s’il y a une erreur, nous devons d’abord la localiser :

  • Proxy externe
  • Nginx dans le conteneur Discourse
  • Discourse lui-même

Proxy externe

  • Appelez-le dans un navigateur et vérifiez le résultat.
  • Vérifiez les journaux d’erreurs du proxy externe.

Nginx dans le conteneur Discourse

  1. Connectez-vous en SSH à votre serveur web.
  2. Connectez-vous directement au socket via curl.
  3. Déboguez la sortie curl et les journaux de Nginx dans Discourse

Important : utilisez l’URL http – et non https.

curl -I --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock http://www.example.org/forum/

Si cela fonctionne, essayez un véritable appel comme :

curl --unix-socket /path-to-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
3 « J'aime »