Non gestion de l'erreur 404 avec une configuration de reverse proxy
Bonjour à tous.
J'espère que vous pourrez m'aider car je commence à devenir chèvre avec ce souci.
Je suis sous un environnement RH 5.0 AS sur VM avec un apache 2.2.3 en RP et je dois notamment rediriger les utilisateurs vers une page d'erreur pour la plupart des erreurs http 4XX et 5XX.
Pour cela j'ai développé un fichier .conf spécifique. Lorsque je fais le test en provoquant une erreur 407 cela fonctionne très bien. Par contre lorsque cela se produit avec une erreur 404, ma page d'erreur ne s'affiche pas.
Je vous mets ma configuration ci-dessous avec [...] pour les infos non nécessaire à la compréhension du souci.
Petite précision j'ai aucune information sur l'erreur 404 qui s'inscrit dans l'error_log mais uniquement dans l'acces_log.
Citation:
"GET /[...]/[...]/[...]/?[...] HTTP/1.0" 404 219
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <VirtualHost *:80>
# gestion des cas d'erreurs
ErrorDocument 400 /erreur.html
ErrorDocument 401 /erreur.html
ErrorDocument 402 /erreur.html
ErrorDocument 403 /erreur.html
ErrorDocument 404 /erreur.html
ErrorDocument 407 /erreur.html
ErrorDocument 408 /erreur.html
ErrorDocument 502 /erreur.html
ErrorDocument 503 /erreur.html
ErrorDocument 504 /erreur.html
# Activation du SSL pour mod_proxy
SSLProxyEngine on
#SSLProxyVerify Require
# Clef privee et certificat du reverse proxy
SSLProxyMachineCertificateFile /etc/httpd/conf/[...]
# Certificat du CA du serveur distant
SSLProxyCACertificateFile /etc/httpd/conf/[...]
SSLProxyCACertificateFile /etc/httpd/conf/[...]
CustomLog logs/specif_access_log combined
ErrorLog logs/specif_error_log
LogLevel warn
# configuration reverse proxy
ProxyRemote * <a href="http://@IP:port" target="_blank">http://@IP:port</a>
#Credential en base64
RequestHeader set proxy-Authorization "Basic [...]"
ProxyPass /[...]/ <a href="https://@IP:port/" target="_blank">https://@IP:port/</a>[...]/
ProxyPass /[...]/ <a href="https://@IP:port/" target="_blank">https://@IP:port/</a>[...]/
ProxyPassReverse /[...]/ <a href="https://@IP:port/" target="_blank">https://@IP:port/</a>[...]/
ProxyPassReverse /[...]/ <a href="https://@IP:port/" target="_blank">https://@IP:port/</a>[...]/
</VirtualHost> |
Par avance je vous remercie pour votre aide.
Non gestion de l'erreur 404
Citation:
Envoyé par
_Mac_
A priori si tu n'as pas de trace pour l'erreur 404 dans error_log c'est qu'il ne s'agit pas d'une erreur 404 déterminée par Apache mais par un script. Lequel ? Aucune idée.
Sinon, as-tu essayé avec différents navigateurs ? IE peut utiliser ses propres pages d'erreur notamment pour la 404 et dans ce cas il se fiche royalement du code HTML que le serveur Web lui renvoie.
Merci _Mac_ de ta réponse.
En complément, je voulais signaler que le serveur distant qui me répond est une boite noire pour moi, car je n'ai pas accès ni à sa configuration ni à ses données. De plus entre les 2 se trouve un proxy en coupure. Je vais voir avec l'admininistrateur de cette plateforme s'il n'y a pas un script.
Non gestion de l'erreur 404 avec une configuration de reverse proxy
Citation:
Envoyé par
_Mac_
Telle qu'elle est, ta configuration fait qu'Apache ne tient pas compte des codes d'erreur des serveurs distants. Si le serveur distant renvoie une erreur 404, Apache va la renvoyer directement au navigateur en ignorant allégrement le ErrorDocument 404. Pour qu'Apache utilise les ErrorDocument avec mod_proxy, il faut le lire dire avec la directive ProxyErrorOverride :
Code:
ProxyErrorOverride On
Ajoute cette ligne à ta configuration.
Si je comprends bien je dois rajouter cette ligne dans mon .conf comme ci-dessous ou dois je le rajouter dans le httpd.conf ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <VirtualHost *:80>
ProxyErrorOverride On
# gestion des cas d'erreurs
ErrorDocument 400 /erreur.html
ErrorDocument 401 /erreur.html
ErrorDocument 402 /erreur.html
ErrorDocument 403 /erreur.html
ErrorDocument 404 /erreur.html
ErrorDocument 407 /erreur.html
ErrorDocument 408 /erreur.html
ErrorDocument 502 /erreur.html
ErrorDocument 503 /erreur.html
ErrorDocument 504 /erreur.html
# Activation du SSL pour mod_proxy
SSLProxyEngine on
#SSLProxyVerify Require
# Clef privee et certificat du reverse proxy
SSLProxyMachineCertificateFile /etc/httpd/conf/[...]
# Certificat du CA du serveur distant
SSLProxyCACertificateFile /etc/httpd/conf/[...]
SSLProxyCACertificateFile /etc/httpd/conf/[...]
CustomLog logs/specif_access_log combined
ErrorLog logs/specif_error_log
LogLevel warn
# configuration reverse proxy
ProxyRemote * http://@IP:port
#Credential en base64
RequestHeader set proxy-Authorization "Basic [...]"
ProxyPass /[...]/ https://@IP:port/[...]/
ProxyPass /[...]/ https://@IP:port/[...]/
ProxyPassReverse /[...]/ https://@IP:port/[...]/
ProxyPassReverse /[...]/ https://@IP:port/[...]/
</VirtualHost> |
Non gestion de l'erreur 404 avec une configuration de reverse proxy
Citation:
Envoyé par
_Mac_
Comme ça dans le VH, c'est bien, c'est ce qu'il faut faire. Après, je la mettrais un peu plus bas, dans le groupe des lignes liées au reverse proxy.
Je viens de modifier le fichier de configuration et le test est concluant.
Merci _Mac_ pour ton aide. :ccool: