Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide : Configuration nginx pour Symfony2.

Aidez moi a établir une best practice pour la configuration de nginx.

    12 mai 2013 à 4:02:16

    Bonjour, 

    De nos jours l'optimisation de la distribution des fichiers est primordiale.

    Je tiens a ajouter ces lignes pour permettre la mise en cache et la délivrance de certains fichiers sous formats gzip.

    gzip_static on;
        expires max;
        add_header Cache-Control public;

    Voici une configuration de nginx pour symfony: 

    upstream phpfcgi {
        server unix:/var/run/php5-fpm.sock;
    }
    server {
        listen 80;
     
        server_name example.com www.example.com;
        root /var/www/example.com/htdocs/web;
     
        error_log /var/log/nginx/example.error.log;
        access_log /var/log/nginx/example.access.log;
     
        # strip app.php/ prefix if it is present
        rewrite ^/app\.php/?(.*)$ /$1 permanent;
     
        location / {
            index app.php;
            try_files $uri @rewriteapp;
        }
     
        location @rewriteapp {
            rewrite ^(.*)$ /app.php/$1 last;
        }
     
        # pass the PHP scripts to FastCGI server from upstream phpfcgi
        location ~ ^/(app|app_dev|config)\.php(/|$) {
            fastcgi_pass phpfcgi;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param  HTTPS off;
        }
    }



    Je ne suis pas expert en configuration nginx mais je présume que je dois faire une inclusion comme celle ci: 

        location ~* \.(jpg|jpeg|gif|png)$ {
    
        gzip_static        on;
    
        access_log        off;
    
        add_header       CacheControl public;
    
        log_not_found     off;
    
        expires           2d;
    
        }

    Serait-il possible selon vous de séparer le cache du dev du cache de prod ( je parle bien sur du cache sur fichiers statiques) par le biais de la configuration nginx, si ou par quels moyens ?

    Merci d'avance, 

    Cordialement, 

    NodeJS

    -
    Edité par NodeJS 12 mai 2013 à 4:20:16

    • Partager sur Facebook
    • Partager sur Twitter
    Cordialement,NodeJS
      12 mai 2013 à 11:07:53

      Bonjour.

      Ma config perso, pour avoir tous les assets (images dans css etc.) dans la config de dev, sachant que le fichier php contient les quelques lignes de config fastcgi pour php-fpm :

      server {
          listen 80;
          listen [::]:80;
      
          root /var/www/mywebsite/web;
      
          server_name mywebsite.tld;
      
          error_log  /var/log/nginx/mywebsite.error.log;
          access_log /var/log/nginx/mywebsite.access.log;
      
          rewrite ^/app\.php/?(.*)$ /$1 permanent;
      
          location = /favicon.ico {
              log_not_found off;
              access_log    off;
          }
      
          location = /robots.txt {
              allow all;
              log_not_found off;
              access_log off;
          }
      
          location / {
              index app.php;
      
              location ~ /\.ht {
                  deny all;
              }
      
              try_files $uri @rewriteapp;
          }
      
          location @rewriteapp {
              rewrite ^/?(.*)$ /app.php/$1 last;
          }
      
          location ~ ^/app_dev\.php(/.*|$) {
              location ~ ^/app_dev\.php/(config|app|app_dev)\.php$ {
                  include php;
              }
              try_files $1 @php; 
          }
      
          location @php {
              include php;
          }
      
          location ~ ^/(app|config)\.php(/|$) {
              include php;
          }
      
      }
      

      Pour les caches différents, tu peux essayer avec $http_referer.

      EDIT: j'ai rajouté ça avant location / :

          location ~* \.(jpg|jpeg|gif|png|bmp|ico)$ {
              gzip_static   on;
              access_log    off;
              log_not_found off;
              fastcgi_ignore_headers Expires Cache-Control;
              if ($http_referer ~ ^http://$server_name/app_dev.php) {
                  expires    epoch;
                  add_header Pragma "no-cache";
                  break;
              }
              add_header    Pragma "public";
              add_header    Cache-Control public; 
              expires       2d;
          }

      ça fait ce qu'on demande, il ne reste plus qu'à voir si le navigateur y réagit bien.

      -
      Edité par Chinoisfurax 12 mai 2013 à 13:32:34

      • Partager sur Facebook
      • Partager sur Twitter
        13 mai 2013 à 19:30:08

        Merci pour ta réponse : serait-il possible de te parler via skype ?
        • Partager sur Facebook
        • Partager sur Twitter
        Cordialement,NodeJS

        Aide : Configuration nginx pour Symfony2.

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown