Comment activer .htaccess avec proxy_fcgi et php-fpm ?

Discussion dans 'Administration d'un site Web' créé par ortolojf, 23 Juin 2015.

Tags:
  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Bonjour

    J'ai upgradé la distro de mon serveur VPS ( OVH Classic 4 ), de Debian 7 Wheezy, à Debian 8 Jessie récemment.

    Tout s'est passé sans encombre, mais mon Apache ( maintenant version 2.4.1 ), est resté en mode prefork, car je constatais que le mode worker était plus lent. ( Probablement à cause d'un problème de fichier php.ini mal configuré ).

    Il y a la possibilité de mpm_event avec fastcgi, mais fastcgi est déjà obsolète ?


    J'ai appris ces temps-ci, que la meilleure façon de configurer Apache 2.4.1+ avec php, est le module proxy_fcgi et php5-fpm , avec la connexion qui va bien, en mode tcp/ip sur port 9000, car la connexion par socket unix, souffre de problème de nombre de sockets.

    Cependant l'inconvénient de du module proxy_fcgi et php5-fpm, est que cette redirection ( par ProxyPass ), intervient avant l'interprétation des fichiers .htaccess, et rend inopérant, les urlrewriting et les authentifications http.


    Donc, ma demande serait de savoir quelle est la meilleure façon de configurer Apache 2.4.1. avec php.

    Merci beaucoup.

    Respectueusement.
     
  2. MoxSite
    MoxSite Nouveau WRInaute
    Inscrit:
    22 Juin 2015
    Messages:
    36
    J'aime reçus:
    0
    Bonjour,

    Pourquoi ne pas utiliser uniquement nginx ? Je l'utilise depuis un moment avec des sites en php ça marche à merveille.
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10

    Bonjour Monsieur

    Je ne cherche pas de solution conjoncturelle à mon problème mais des solutions structurelles. ;)

    Apache est la référence en matière de serveur web.

    D'autre part, nginx ne supporte pas les .htaccess et les urlrewriting ?

    C'est précisément mon problème : J'ai besoin de .htaccess et des authentifications http.

    Si Apache ne fonctionne plus où va-t-on ?

    Merci beaucoup de votre réponse.

    Respectueusement.
     
  4. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Rebonjour

    J'ai vu dans un forum à propos de Apache 2.4, que cette configuration ( dans le VirtualHost ), permet de laisser la fonctionnalité .htaccess , tout en ayant proxy_fcgi et php-fpm :

    Code:
    # Mon DOCUMENT_ROOT est : /var/www/html.
    <IfModule mod_proxy_fcgi.c>
            RewriteEngine On
            RewriteBase /
            RewriteOptions InheritBefore
            RewriteCond %{REQUEST_FILENAME} -f
            RewriteRule ^([^\.]+\.php)$ fcgi://127.0.0.2:9126/var/www/html/$1 [L,P]
        </IfModule>
    
    Et puis, pour permettre les authentifications http :

    Code:
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    

    Ma question :

    Pour proxy_fcgi ci-dessus ( 1er code ), je suppose qu'il faut le mettre dans chacun des <VirtualHost> des sites ?

    Je ne suis pas sûr du port ( 9126 ), je vais reregarder ces commentaires.

    Et... Pour le RewiiteRule ( 2ème code ), où doit-on le mettre ?

    Merci de votre aide.

    Respectueusement.
     
  5. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Bonjour,

    j'ai déployé de l'Apache 2.4 avec PHP-FPM en backend, et les fichiers .htaccess sont bien pris en compte... à condition de les activer (en effet ils sont désactivés par défaut).

    Code:
    <VirtualHost *>
        ServerName www.foo.bar
        ServerAlias *.foo.bar
    
        DocumentRoot /home/foo/http/www/
        VirtualDocumentRoot /home/foo/http/%-3+/
    
        <FilesMatch "\.php$">
            SetHandler "proxy:..."
        </FilesMatch>
    
        CustomLog /var/log/apache2/access_foo.log virtualhost
        ErrorLog /var/log/apache2/error_foo.log
    </VirtualHost>
    
    <Directory /home/foo/http/ >
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
    Ici ce que tu cherches c'est probablement le “AllowOverride”, qui doit avoir une valeur autre que “None”, cf : http://httpd.apache.org/docs/2.4/fr/upgrading.html#run-time

    Sinon pour les précisions : bien sûr qu'NginX gère l'urlrewriting et l'identification HTTP. Ce qu'il ne gère pas, c'est le fait de déporter la configuration dans un fichier “.htaccess” recherché, lu et interprété à chaque hit.
     
  6. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Bonjour Bool ;)

    Est-ce que ta solution permet les authentifications http ?

    Et... La transmission des paramètres de login/password à un prog. php ?

    Merci.

    Respectueusement.
     
  7. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    Tu dois avoir une directive FastCGIExternalServer dans la configuration Apache.
    Il faut ajouter -pass-header Authorization pour l'identification HTTP.
    Un truc du genre :
    Code:
    FastCGIExternalServer /truc/bidule/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
    
     
  8. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
  9. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10

    Bonjour Bool

    Je suppose que je dois placer après le Filesmatch ?

    Ou dedans ? ;)

    Merci beaucoup de ton aide.

    Respectueusement.

    Jean François Ortolo
     
  10. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Pas essayé, mais à priori ça n'a guère d'importance. Il s'agit juste de déclarer une variable d'environnement, qui sera traitée par mod_proxy le moment venu.
     
  11. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Bonjour Bool

    J'ai testé sur mon ordinateur çà marche. ;)

    En tout cas sur que les .htaccess fonctionnent.

    Je n'ai pas constaté d'accroissement de vitesse, c'est peut-être une illusion.

    Je vais migrer prochainement.

    Une dernière question : Debian 8 ( Jessie ), a théoriquement Apache 2.4.11 , et je n'ai que 2.4.1.

    J'ai pourtant fait ce soir : apt-get update et apt-get upgrade, aucun paquet de changé.

    Mon /etc/apt/sources.list est conforme à la doc de Debian, avec une ligne spécifique à OVH, et des clés gpg.

    2.4.1 est équivalent à 2.4.10 ?

    Ta méthode ne fonctionne qu'à partir de 2.4.9 . ;(

    C'est la doc Apache qui le dit.

    Super merci pour ton aide. ;)

    Remerciements

    Respectueusement.
     
  12. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Bonsoir,

    content que tu aies réussi à faire fonctionner ça :)

    Pour ce qui est de la version Apache de Debian Jessie, elle est fournie avec un Apache 2.4.10, et je ne vois pas pourquoi tu aurais une version différente.

    Code:
    daevel@pibb:~$ dpkg -l apache2-mpm-event                                                                                                 
    Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
    | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
    |/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
    ||/ Nom                          Version             Architecture        Description
    +++-============================-===================-===================-=============================================================
    ii  apache2-mpm-event            2.4.10-10           amd64               transitional event MPM package for apache2
    À tous hasard, essaye un apt dist-upgrade.
     
  13. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Le fCGI / FPM n'est pas spécialement plus rapide que le classique module PHP, ou du moins pas dans des proportions facilement mesurables, mais il est surtout scalable, c'est à dire qu'il encaisse infiniment mieux les pics de trafic, tout en consommant nettement moins de ressources.
     
  14. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10

    Bonjour Bool

    Ce serait excellent, car c'est précisément où çà bloque.

    Je suppose que je devrais convertir d'abord toute ma database, de MyISAM vers InnodDB ?

    Actuellement je n'ai que du MyISAM.

    Je vais tester sur mon ordinateur. ;)

    Merci beaucoup.

    Respectueusement.
     
  15. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Bonjour,

    oui MyISAM n'est pas spécialement «scalable» non plus, chaque modification bloque complètement la table ce qui interdit complètement les accès concurrents. Et chose rigolote, certains SELECT nécessitant une table temporaire (car gros traitement et/ou requête mal fichue), se retrouvent également à poser le verrou en question.

    Avec les machines multi-coeurs qu'on a de nos jours, MyISAM est bien souvent une plaie :D
     
  16. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Bonjour Bool

    Voilà aujourd'hui j'ai converti toute ma database vers le moteur InnoDB.

    Je n'ai plus qu'à configurer Apache en mode mpm_event et proxy_fcgi.

    Super merci, mon site sera sans doute plus rapide. ;)

    Il semblerait que le passage à InnoDB ait un peu fluidifié les accès.

    Merci beaucoup de ton aide.

    Respectueusement.
     
  17. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Hep, help ;)

    J'ai réussi à convertir mon serveur VPS en mode mpm_event + proxy_fcgi + fcgid + php5-fpm

    J'utilise strictement ta méthode, et toutbaine,sic en'est que les ServerAlias ( sans www. ),ne sont pas interprétés par php5-fpm.

    J'aurais du mal, si tout le monde voyait mon code php... ;(

    Et encore, même avec les ServerName ( avec www. ), celà ne marche que dans Chrome.

    Dans Firefox, le code php s'affiche sans être interprété.

    Je subodore une erreur de mon certificat ssl.

    Théoriquement dans ce cas, Firefox devrait afficher une erreur.

    Merci beaucoup de ton aide.

    Respectueusement.
     
  18. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    mmm ça me semble un peu confu tout ça.

    Déjà, tu devrais désactiver (ou virer) le module fcgid d'Apache.
    En gros tu as 3 principaux modes d'interaction Apache/PHP :
    - mod_php
    - mod_fcgi + php5-cgi
    - mod_proxy_fcgi + php5-fpm

    Donc avec php5-fpm, pas besoin du mod_fcgi.

    Maintenant pour en revenir à ton problème, je n'ai pas trop d'idée... «chez moi ça marche». Donc à moins de regarder directement sur le serveur l'ensemble du montage, difficile de savoir ce que tu as réellement fait...
     
  19. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Bonjour Bool

    Le module fcgid était bien désactivé.

    J'ai fait ce matin une modification de : /etc/php5/fpm/pool.d/www.conf :

    Après, le site est valide sur Firefox aussi, ( mais pas sans www ).

    Si je lance le site sans http://www., php n'est pas interprété.

    C'est le seul problème résiduel.

    J'ai tous les fichiers de ma configuration.

    Il y a plusieurs sites, avec l'ip du serveur ipv4 et ipv6 théoriquement, les virtualhost sont dans /etc/apache2/sites-available/.

    Ce fichier s'appelle : http://www.pronostics-courses.fr.conf

    Voici le code, moins le certificats ssl.

    Code:
    
    <VirtualHost *:80>
            ServerName www.pronostics-courses.fr
            ServerAlias pronostics-courses.fr
            ServerAdmin ortolo.jeanfrancois@free.fr
            DocumentRoot /var/www/html
    
            SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    
            <Directory /var/www/html>
                    Options -Indexes +FollowSymLinks -ExecCGI +MultiViews
    
                    AllowOverride All
    
                    DirectoryIndex /index.php index.php
    
                    <IfModule mod_proxy_fcgi.c>
    
                            RewriteEngine On
                            RewriteBase /
    
                            SetEnv proxy-chain-auth On
    
                            <FilesMatch \.php>
                            SetHandler  "proxy:fcgi://127.0.0.1:9000"
                            </FilesMatch>
    
                    </IfModule>
    
                    Order allow,deny
                    allow from all
    
                    <IfVersion >= 2.4>
                            Require all granted
                    </IfVersion>
            </Directory>
    
            Alias /awstats-icon/ /usr/share/awstats/icon/
    
            <Directory /usr/share/awstats/icon>
                    Options None
                    AllowOverride None
                    Order allow,deny
                    Allow from all
            </Directory>
    
            ErrorLog ${APACHE_LOG_DIR}/www.pronostics-courses.fr_error.log
            CustomLog ${APACHE_LOG_DIR}/www.pronostics-courses.fr_access.log combined
    
            LogLevel debug
    
    #       SetOutputFilter  DEFLATE
    #       SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \no-gzip dont-vary
    #       SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|situ|nom)$ \no-gzip dont-vary
    
            BrowserMatch ^Mozilla/4 gzip-onlytext/html
            BrowserMatch ^Mozilla/4\.0[678] no-gzip
    </VirtualHost>
    <IfModule mod_ssl.c>
    <VirtualHost *:443>
            ServerName www.pronostics-courses.fr
            ServerAlias pronostics-courses.fr
            ServerAdmin ortolo.jeanfrancois@free.fr
            DocumentRoot /var/www/html
    
            SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    
            <Directory /var/www/html>
                    Options -Indexes +FollowSymLinks -ExecCGI +MultiViews
    
                    AllowOverride All
    
                    <IfModule mod_proxy_fcgi.c>
    
                            RewriteEngine On
                            RewriteBase /
    
                            SetEnv proxy-chain-auth On
    
                            <FilesMatch \.php>
                            SetHandler  "proxy:fcgi://127.0.0.1:9000"
                            </FilesMatch>
    
                    </IfModule>
    
                    Order allow,deny
                    allow from all
    
                    <IfVersion >= 2.4>
                            Require all granted
                    </IfVersion>
            </Directory>
    
            Alias /awstats-icon/ /usr/share/awstats/icon/
    
            <Directory /usr/share/awstats/icon>
                    Options None
                    AllowOverride None
                    Order allow,deny
                    Allow from all
            </Directory>
    
            ErrorLog ${APACHE_LOG_DIR}/www.pronostics-courses.fr_ssl_error.log
    
            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel debug
    
            CustomLog ${APACHE_LOG_DIR}/www.pronostics-courses.fr_ssl_access.log combined
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
    # ... Le reste pour les certitficats ssl.
    
    </VirtualHost>
    </IfModule>
    
    

    Merci beaucoup de ton aide.

    Il semblerait, que le ServerAlias ne soit pas pris en compte.

    Quand j'intervertis http://www.pronostics-courses.fr et pronostics-courses.fr, l'url sans www a php qui n'est pas interprété.

    Respectueusement.
     
  20. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 864
    J'aime reçus:
    10
    Bonjour Bool

    Je te demande pardon de t'avoir dérangé.

    Maintenant tout baigne.

    J'ai simplement, échangé les ServerName et ServerAlias, et remis à zéro l'historique de mes navigateurs.

    Merci de me dire si çelà passe sur tous les navigateurs ?

    Quelle que soit l'url ( avec et sans www ) et le ndd avec redirection vers mon ndd principal ( voir profil ), php est interprété et le contenu html s'affiche.

    Super merci pour ton aide, maintenant mon site fonctionne correctement dans les règles de l'art.

    Google m'a trouvé hier 520 pages "not found" ( 404 ), pendant que je bidouillais la config.

    J'espère ne pas finir dans les oubliettes, actuellement je suis,très bien positionné sur des mots-clés turfistes.

    Je vais voir si je vais résister au prochain Panda. ;)

    Respectueusement.
     
Chargement...
Similar Threads - activer htaccess proxy_fcgi Forum Date
Activer MOD_GZIP et MOD_EXPIRES dans un .htaccess URL Rewriting et .htaccess 26 Novembre 2010
Comment activer le rapport du commerce élétronique ? Google Analytics 8 Juillet 2019
Comment désactiver les commentaires sur un blog ? Problèmes de référencement spécifiques à vos sites 26 Août 2018
Google Chrome va activer son bloqueur de publicités en février Monétisation d'un site web 31 Janvier 2018
Faut-il activer les fichiers media dans le sitemap (Yoast) ? Crawl et indexation Google, sitemaps 18 Octobre 2017
Comment réactiver mon compte Instagram ? Autres réseaux sociaux 21 Septembre 2017
Désactiver une catégorie de produit Administration d'un site Web 11 Septembre 2017
Demande conseil pour activer des services sur Google et Google Image Référencement Google 30 Avril 2017
PLUGIN WP "REDIRECTIONS" : génial mais gros bug qui m'oblige à le désactiver Netlinking, backlinks, liens et redirections 12 Janvier 2017
Activer commentaires pour réalisations Demandes d'avis et de conseils sur vos sites 1 Janvier 2017
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice