Je migre mon Joomla! application depuis un serveur NGinx (cache) + Apache (php) vers un serveur Nginx + PHP-FPM Fast CGI. Lors du test des différentes parties, j’ai constaté que lorsque le backend (administrateur) lançait une erreur (c’est-à-dire qu’il ne pouvait pas écrire ce fichier, etc.), Nginx a répondu par une erreur 502 Bad Gateway.
J'ai vu cette question:
Mais la solution consistait à résoudre le problème à l'origine de l'erreur plutôt que de résoudre le problème de la mauvaise passerelle.
J'ai essayé de localiser le vrai problème et je suis arrivé à PHP) avec comme en-tête d'état:
Statut "0 Impossible d'écrire le fichier"
Je pense que Nginx tente de mapper cet en-tête sur un code d'état HTTP, puis échoue.
Quelqu'un at-il une idée sur la façon de résoudre ce problème?
J'ai vu la directive error_page
nginx.org/en/docs/http/ngx_http_core_module.html#error_page
sur nginx avec fastcgi_intercept_errors
nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors
et avec proxy_intercept_errors
nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors
, mais comme l'en-tête est faux, je pense que je ne peux pas le gérer sous Nginx (semble également ne contrôler que les codes d'état supérieurs à 300)
Parvenez à le résoudre en ajoutant un en-tête personnalisé au fichier error.php du modèle d’administrateur ... ne savez pas si c’est la meilleure solution.
if ($this->error->getCode() >= 400 && $this->error->getCode() <= 500) {
header("Status: {$this->error->getCode()}", true, $this->error->getCode());
} else {
// Here is where MySQL Error would fit (e.g. mysql error 1064)
header("Status: 500", true, 500);
}