2008-12-21 6 views
0

Apache crache une réponse HTTP de code: 400 "Bad Request" sans détails quand j'accède à une page pilotée par un script FastCGI.Apache donnant une erreur 400 sur un FastCGI VirtualHost

  • J'ai installé le module mod_fcgid et il est chargé et configuré dans les fichiers de configuration Apache
  • J'ai testé plusieurs scripts FastCGI, tous exploités lorsqu'ils sont directement exécutés.
  • Les ressources statiques sont servies de manière appropriée.
  • Apache tente de lancer le script, car il se plaint quand je réécris l'URL d'un script non
existant

Quelqu'un a une idée de ce qui ne va pas avec mon Apache Config?

<VirtualHost ip.ad.re.ss:80> 
    ServerName demo.domain.com:80 

    DocumentRoot /var/www/vhosts/domain.com/subdomains/demo/rails/public 
    CustomLog /var/www/vhosts/domain.com/statistics/logs/demo_access_log combined 
    ErrorLog /var/www/vhosts/domain.com/statistics/logs/demo_error_log 
    LogLevel info 
    Options +FollowSymLinks +ExecCGI -SymLinksIfOwnerMatch 
    AddHandler fcgid-script .fcgi 

    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] 
</VirtualHost> 

EDIT - J'ai vérifié les journaux mod_rewrite et URI sont réécrite correctement

+0

Je n'ai jamais trouvé de solution et j'ai fini par utiliser une seule instance de mongrel pour faire le travail à la place. –

Répondre

0

Essayez de supprimer la réécriture DOCUMENT_ROOT cond. Deuxièmement, vérifiez les directives de notation de mod_rewrite, elles sont extrêmement instructives autant que les issues étranges comme ceci.

+0

Ils étaient très instructifs et j'avais quelques trucs mal. La réécriture fonctionne correctement maintenant, mais je reçois toujours une erreur 400. réécrire les journaux: RewriteCond: entrée = '/ chemin/à/app/public /' pattern = '! - f' => apparié réécrire '/' -> 'dispatch.fcgi' chemin local résultat: dispatch.fcgi –

0

Très bien, encore une chose à essayer.
http://httpd.apache.org/docs/2.2/mod/core.html#loglevel.

Définissez le niveau de consignation sur Déboguer et assurez-vous que ce n'est pas sur une machine de production, car elle génère beaucoup de sortie par événement individuel (get/put).

Je pense que votre exemple ci-dessus de FastCGI manque quelque chose, mais j'avoue qu'il a été un moment depuis que j'ai fait autre chose que php ou python fastcgi.
Dans quelle langue est dispatch.fcgi? Pouvez-vous l'exécuter à partir de la ligne de commande et Apache a-t-il l'autorisation d'exécuter le fichier? (sudo su apacheaccount). Vous saviez qu'il vous manquait quelque chose: check out ->http://fastcgi.coremail.cn/configuration.htm FCGIWrapper est nécessaire pour dire rapidement à CGI quoi utiliser pour exécuter votre fichier dispatch.fcgi.

+0

Merci pour essayer. J'ai changé le LogLevel, mais le journal des erreurs est vide et le journal des accès est normal car Apache ne le traite pas comme une erreur je pense. C'est en ruby, et oui, le dispatch.fcgi est exécutable et lisible par tout le monde. –

+0

Oh, et oui, dispatch.fcgi s'exécute encore bien à partir de la ligne de commande –

+0

Saviez-vous qu'il vous manquait quelque chose: consultez -> http://fastcgi.coremail.cn/configuration.htm FCGIWrapper est nécessaire pour dire à cgi rapide ce utiliser pour exécuter votre fichier dispatch.fcgi. – David