2 votes

problème avec le proxy inverse de nginx vers apache2

J'essaie de mettre en place un système de proxy inverse où nginx se trouve à l'avant pour gérer toutes les demandes provenant d'Internet et apache2 se trouve à l'arrière pour gérer tout le contenu dynamique. Je peux configurer un virtualhost dans nginx en fonction de mes domaines, mais comme apache2 n'écoute que sur 127.0.0.1:8080 (non orienté vers l'extérieur), j'aimerais toujours avoir un virtualhost basé sur le domaine (ou tout ce qui peut être transmis de nginx à apache) et modifier le contenu dynamique en fonction de celui-ci.

En gros, j'ai une configuration nginx dans sites_available et sites_enabled qui dit essentiellement pour l'emplacement /{proxy_pass http://127.0.0.1:8080/ ;}. Donc actuellement, je ne pense pas qu'il y ait un moyen de détecter quel domaine nous avons à l'extérieur pour apache.

Je suis presque exactement ce guide pour le mettre en place : http://tumblr.intranation.com/post/766288369/using-nginx-reverse-proxy Le code et les autres sont donc presque les mêmes.

Quelqu'un a-t-il une idée ?

Jason

1voto

slachterman Points 163

FurtiveFelon - J'ai lancé "nginx pass host header" dans Google et a vu pas mal de résultats . Le site premier résultat du blog de Sameer Parwani semble tout à fait dans vos cordes.

# pass along header with reverse proxy requests
proxy_set_header Host $host;

Il sera un peu difficile de configurer les hôtes virtuels dans nginx et apache, mais cette solution devrait vous convenir si je comprends bien vos besoins.

1voto

Myer Points 1892

Ajoutez ce qui suit à apache ports.conf

NameVirtualHost *:8080
Listen 8080

Ensuite, dans chaque hôte virtuel de domaine :

<VirtualHost *:8080>
     ServerAdmin info@yourdomain.com
     ServerName yourdomain.com
     ServerAlias www.yourdomain.com
     DocumentRoot /srv/www/yourdomain.com/public_html
     ErrorLog /srv/www/yourdomain.com/logs/error.log
     CustomLog /srv/www/yourdomain.com/logs/access.log combined
</VirtualHost>

Créer un fichier default.conf dans /etc/nginx/sites-enabled et définir le serveur amont

upstream apache {

      server 127.0.0.1:8080 weight=1 fail_timeout=120s;
}

Dans chaque fichier de conf de sites dans /etc/nginx/sites-enabled, utilisez le serveur en amont que vous avez créé dans default.conf pour le passage du proxy :

location ~* *\.php {

                        proxy_pass http://apache;
        }

-1voto

karmawhore Points 3865
NameVirtualHost 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>
ServerName firstdomain.com
ServerAlias www.firstdomain.com
...
</VirtualHost>

<VirtualHost 127.0.0.1:8080>
ServerName seconddomain.com
ServerAlias www.seconddomain.com
...
</VirtualHost>

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