J'essaye d'implémenter une application Catalyst en utilisant nginx comme proxy Web pour les fichiers statiques, et en utilisant Starman pour mon serveur web principal. (Je pourrais utiliser Apache & FastCGI et il fonctionne très bien, mais je voudrais vraiment obtenir toute PSGI/Plack chose et Starman aplanies)uri_for inclut le numéro de port sur les redirections
Starman démarre bien et peut gérer mes demandes très bien sur http://localhost:5000
. Quand je lance nginx pour l'utiliser comme proxy, mes URL deviennent moche et mangle avec le numéro de port (5000) quand et où j'utilise la méthode $c->uri_for
.
Exemple:
$c->uri_for("/login") becomes http://myapp.example.com:5000/login rather than http://myapp.example.com/login
J'ai quelques journaux créés je peux voir ce que X-Forwarded-Host
et X-Forwarded-For
sont définis comme. Pour les requêtes normales, des valeurs sont définies (provenant de nginx), mais chaque fois que la méthode $c->uri_for
est utilisée, ces valeurs n'existent pas.
Est-ce que quelqu'un d'autre a eu ce problème?
Ai-je oublié quelque chose d'autre dans ma configuration de nginx ou de ma conf de Catalyst?
Merci!
config nginx:
server { listen 80; server_name myapp.example.com; location /static { root /data/users/MyApp/root; expires 30d; } location/{ proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:5000/; } }
événement si ce sera couru sur le même serveur physique, dans la configuration MyApp j'ai mis:
MyApp->config(using_frontend_proxy => 1)
Versions:
Catalyst : 5.80024 nginx : 0.7.67 Plack : 0.9942 Starman : 0.2006
Ceci est documenté à https://metacpan.org/pod/Catalyst#PROXY-SUPPORT et devrait être la réponse acceptée car il est construit dans Catalyst, n'a pas besoin de modifier le fichier '.psgi' généré et peut être défini par la configuration locale. –