web-dev-qa-db-fra.com

Proxy inverse Apache changeant de type de contenu

Mise à jour 3:

J'ai un peu essayé de définir ContentType pour tous les fichiers CSS avec différents types tels que text/plain, text/html et text/css dans le fichier .htaccess du serveur Web hébergeant Owncloud et lors de l'exécution de curl --head http://www.<myDomain>.com/core/css/styles.css?v=abbcfa8606670b201527db15c9717a61 à partir du proxy inverse. serveur, les modifications sont reflétées dans l'en-tête Content-Type.

Cependant, lorsque j'exécute la même commande curl sur le proxy inverse, je ne reçois que le même Content-Type text/html; charset=UTF-8

Mise à jour 2:

J'ai comparé les en-têtes de réponse http lors de l'accès direct à la page et via un proxy inverse, et j'ai constaté que, lorsque vous demandiez directement un fichier css, le type de contenu était text/css, mais que vous utilisiez un proxy inverse, text/html. ; jeu de caractères = UTF-8.

Pourquoi le proxy change-t-il Content-Type et comment puis-je l'empêcher? J'ai essayé de définir DefaultType None dans Apache2.conf mais cela ne change rien.

Mise à jour:

Dans google chrome, j'obtiens également des variantes du message d'erreur

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://<my-server-address>/core/css/styles.css?v=f8ed568350f3f0107c10d8e06c55f727".

Si je supprime la ligne de .htaccess

Header set X-Content-Type-Options "nosniff"

Je ne reçois plus le message d'erreur relatif à la vérification de type MIME stricte, mais les mêmes messages "Ressource interprétée en tant que feuille de style" ainsi que des variantes de:

Uncaught SyntaxError: Unexpected token < oc.js?v=f8ed568... :1

Voici mes en-têtes http:

HTTP/1.1 200 OK Date: Fri, 08 Apr 2016 20:04:11 GMT Server: Apache/2.4.7 (Ubuntu) X-Powered-By: PHP/5.5.9-1ubuntu4.14 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src * X-XSS-Protection: 1; mode=block X-Robots-Tag: none X-Frame-Options: SAMEORIGIN X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Content-type: text/html; charset=UTF-8 Set-Cookie: ocirse4el2n4=0aad97s9uv1g5sclishd7sev85; path=/; HttpOnly Set-Cookie: oc_sessionPassphrase=YFrm%2BphkwzrtmgZ%2BJPnv9%2BJXZ4jYMK7TRPuHrgyoJ324CiFcGDm%2FrVITkXEjLDZXYUw%2BGLGrXe1tt8v3YZiHabYyd3Muwfq7BTcY%2FuFzVimQxYGCa682%2FDehZGG0HyRS; path=/; httponly

J'ai deux serveurs Ubuntu 14.04 exécutant Apache 2.4.7, MySQL Ver 15.1 Distrib 10.0.22-MariaDB et PHP 5.5.9.

L’un d’eux est interne, sans accès Internet et utilise un serveur owncloud et l’autre fait face à Internet avec un serveur Apache qui exécute un proxy inverse pour le serveur interne afin de permettre l’accès à owncloud depuis Internet.

Le problème que je rencontre est que, lorsque vous utilisez le proxy inverse, la page Web se charge, mais la plupart du contenu semble échouer et le site Web ne fonctionne pas comme prévu. Si j'ouvre la console, je reçois les variantes des messages d'erreur suivants:

Dans la console Firefox:

The stylesheet <my-server-address>/core/css/jquery.ocdialog.css?v=f8ed568350f3f0107c10d8e06c55f727 was not loaded because its MIME type, "text/html", is not "text/css".
SyntaxError: expected expression, got '<'

Dans la console Google chrome:

Refused to execute script from '<my-server-address>/index.php/core/js/oc.js?v=f8ed568350f3f0107c10d8e06c55f727' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

L'accès à la page Web owncloud en interne fonctionne bien, c'est pourquoi je pense que le problème vient du proxy inverse.

Voici à quoi ça ressemble quand on utilise le proxy inverse:

This is how it looks when going through the reverse proxy

Et voici à quoi ça ressemble quand on va localement: enter image description here

Notez également que le bouton sur la première image ne répond pas.

2
Jimmy

J'ai finalement découvert qu'il me manquait une fin/sur les commandes ProxyPass.

Auparavant j'avais écrit:

ProxyPass / http://cloud.myDomain.com
ProxyPassReverse / http://cloud.myDomain.com

CA devrait etre:

ProxyPass / http://cloud.myDomain.com/
ProxyPassReverse / http://cloud.myDomain.com/
1
Jimmy

Si votre serveur proxy ou votre conteneur ajoute l'en-tête suivant lors du traitement du fichier .css, certains navigateurs tels que Chrome devront obligatoirement effectuer une vérification stricte des types MIME:

X-Content-Type-Options: nosniff

Supprimez cet en-tête pour empêcher Chrome d'effectuer la vérification MIME.

1
Analog