Jump to content

Apache + Nginx et règles de Rewrite


Recommended Posts

Un petit up.

Apparemment personne ne fonctionne avec Nginx. Dernier jour d'essai puis je supprime Nginx :(

 

Un peu plus d'info :

config actuellement un serveur basé sur :

debian 6

apache 2

nginx

et Prestashop utilisant le REWRITE.

Les options de rewrite ont bien été activées.

 

Mon problème actuellement est le suivant (je vous expose 4 cas):

 

Cas 1/ Lorsque Nginx n'est pas installé, tout fonctionne bien, avec ou sans l'option Rewite.

 

Cas 2/ Lorsque j'installe et configure Nginx, sans la réécriture des liens avec Pretashop : tout fonctionne, tout s'affiche.

 

Cas 3/ Lorsque je laisse activer le Rewriting, via le BO de Prestashop, mais avec aucune règle dans le fichier de config de Nginx, toutes les pages s'affichent, avec la bonne réécriture de l'URL (accueil, produit, etc.) mais aucune photo ne s'affiche...

 

Cas 4/ Dès que j'active tout : Nginx + les règles de Rewrite (que j'intègre dans le fichier de config de Nginx), seule la page d'accueil fonctionne, avec les images de la page d'accueil qui s'affichent bien aussi.

Mais les autres pages donnent une erreur "La page n'est pas redirigée correctement".

L'URL de chaque page a bien été réécrite de la bonne manière, mais la page recherchée a un statut "301 Moved". Le serveur tente de lancer 21 fois, et 21 fois la page remonte (avec le "GET") ce statut "301 moved".

 

 

Je vous joins ici mes deux fichiers config :

 

fichier /etc/nginx/sites-available/default

server {

rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$1$2.jpg last;
rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$1$2$3.jpg last;
rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;
rewrite ^/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+.jpg$ /img/c/$1.jpg last;
rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;
rewrite ^/([0-9]+)-[a-zA-Z0-9-]*.html /product.php?id_product=$1 last;
rewrite ^/[a-zA-Z0-9-]*/([0-9]+)-[a-zA-Z0-9-]*.html /product.php?id_product=$1 last;
rewrite ^/([0-9]+)-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /category.php?id_category=$1&noredirect=1 last;
rewrite ^/([0-9]+)-[a-zA-Z0-9-]* /category.php?id_category=$1 last;
rewrite ^/([0-9]+)__([a-zA-Z0-9-]*) /supplier.php?id_supplier=$1 last;
rewrite ^/([0-9]+)_([a-zA-Z0-9-]*) /manufacturer.php?id_manufacturer=$1 last;
rewrite ^/content/([0-9]+)-([a-zA-Z0-9-]*) /cms.php?id_cms=$1 last;
rewrite ^/content/category/([0-9]+)-([a-zA-Z0-9-]*) /cms.php?id_cms_category=$1 last;
rewrite ^/erreur-404$ /404.php last;
rewrite ^/panier$ /cart.php last;
rewrite ^/contactez-nous$ /contact-form.php last;




    listen   80; ## listen for ipv4
    listen   [::]:80 default ipv6only=on; ## listen for ipv6
    #server_name  localhost;
    server_name www.monsite.fr;
    access_log  /var/log/nginx/monsite.access.log;

    location ~* \.(jpg|jpeg|gif|css|png|js|ico|swf|mp3)$ {
		    root   /var/www/monsite;
		    expires	    365d;
		    access_log	 off;
    }


    location / {
		    proxy_pass http://127.0.0.1:8080;
		    proxy_set_header Host $host;
		    proxy_set_header X-Real-IP $remote_addr;
		    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		    access_log off;
    }

    location /doc {
		    root   /usr/share;
		    autoindex on;
		    allow 127.0.0.1;
		    deny all;
    }

    location /images {
		    root   /usr/share;
		    autoindex on;
    }

 

 

fichier /etc/apache2/sites-enabled/000-default

/etc/nginx/sites-available# more /etc/apache2/sites-enabled/000-default
<VirtualHost *:8080>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/monsite
    <Directory />
		    Options FollowSymLinks
		    [b]AllowOverride All[/b]
    </Directory>
    <Directory /var/www/monsite>
		    Options Indexes FollowSymLinks MultiViews
		    [b]AllowOverride All[/b]
		    Order allow,deny
		    allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
		    [b]AllowOverride All[/b]
		    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		    Order allow,deny
		    Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

 

Enfin les logs sous /var/logs ne donnent rien d'explicite... Ne donnent rien tout court même

La log apache2 :

 

127.0.0.1 - - [22/Apr/2012:18:31:03 +0200] "GET /product.php?id_product=1204 HTTP/1.0" 301 462 "http://www.monsite.fr/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0"

 

 

Voilà voilà, ça fait plus d'une semaine que je me prends la tête avec.

Peut-être que quelqu'un trouvera une solution, sait-on jamais !!! :rolleyes:

Link to comment
Share on other sites

Bonjour,

 

Je viens aux news.

Désolé du retard.

Alors j'ai réussi à faire fonctionner avec la solution suivante :

 

J'ai laissé les règles dans le fichier htaccess sauf les règles concernant les fichiers statiques (jpeg, jpg, bmp, etc.)

Tout fonctionne avec cette config sauf pour les fichiers HTML.

Je n'arrive pas à trouver la bonne règle d'écriture Nginx pour les fichiers .*html

 

Ceci étant, j'ai laissé tombé pour le moment.

Je fais tout passer par Apache.

 

Je voulais Nginx car sur le temps (je l'espère) avec le nombre de visites en heure de pointe, j'ai peur de saturer au niveau des performances même si aujourd'hui, j'ai encore de la marge.

Pour CDN, je ne connaissais pas.

Link to comment
Share on other sites

  • 4 months later...
  • 2 weeks later...

Tu as Apache derrière Nginx ?

 

Si oui, mieux vaut utiliser Varnish comme proxy si tu as du temps .. sinon, il te suffit donc de servir les images sur le nginx et le reste renvoit à Apache qui s'occupera du reste, tu dois donc splitter les règle de rewrite.

 

Et oui apparement les développeurs de Prestashop n'ont jamais eu de cours sur le Web ;-) il faut donc des règles pour donner le contenu static des images (ça c'est une énorme connerie de leur part ....)

 

Ou alors tu as installé aussi php5-fpm et tu te passes d'Apache ?

Link to comment
Share on other sites

  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...