2 votes

Comment définir la variable php SERVER_PORT sur 80, derrière Varnish ?

Comment forcer php à lire SERVER_PORT comme 80, lorsque apache écoute sur 8080 et varnish écoute sur 80 ??

Si mon hôte virtuel apache est configuré sur 8080, SERVER_PORT sera toujours 8080, cela me pose un problème car dans de nombreuses parties de l'application, quelques liens sont calculés avec SERVER_NAME et SERVER_PORT ensemble, .. donc ce dont j'ai besoin est que php "croie" que SERVER_PORT est 80, ainsi tous les liens passeront par varnish

0 votes

Pourquoi voulez-vous exécuter Varnish si vous voulez simplement tout faire passer à travers au lieu de lui permettre de le mettre en cache?

0 votes

Il pourrait utiliser Varnish pour le mise en cache des fichiers statiques, afin de se protéger contre les diverses attaques spécifiques à Apache, ou pour toute autre raison.

0 votes

@jdw devicenull a raison, j'utilise Varnish pour tous les fichiers statiques, et je transmets chaque requête php à Apache

3voto

Karel Points 56

Modifiez votre configuration comme suit:

  • apache fonctionne sur 127.0.0.1, port 80
  • varnish fonctionne sur 192.168.1.1 port 80 (où 192.168.1.1 est votre vraie adresse IP actuelle)

De cette façon, les deux démons fonctionnent sur le port 80. Cela ne fonctionne bien sûr que si vous n'avez jamais besoin d'accéder à apache depuis l'extérieur de la machine locale.

0voto

devicenull Points 5542

Je ne pense pas qu'il y ait de moyen propre de faire cela. Y a-t-il un fichier inclus par chaque script PHP qui doit être défini de cette manière ? Si c'est le cas, vous pouvez faire quelque chose d'horrible comme ceci :

$_SERVER['SERVER_PORT'] = 80;

0 votes

Merci pour la réponse,.. il semble que nous allons devoir modifier certaines choses du côté du code, ... comme vous dites, il n'y a pas de moyen propre de le faire

0voto

MajesticRa Points 377

Eh bien ce n'est pas propre ... mais sur une base de code énorme, vous pouvez envisager d'utiliser "auto_prepend_file" via php.ini ou .htaccess dans lequel vous pourriez réinitialiser la variable $_SERVER. (Voir : http://php.net/manual/en/ini.core.php )

Mais encore une fois, ce n'est pas une solution propre ;-)

0voto

David Points 1

J'ai ajouté un support pour cela dans le nouveau mod_rpaf @ https://github.com/gnif/mod_rpaf.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X