2011-10-03 8 views
3

Je travaille sur un nginx.conf pour exécuter Magento, le site fonctionne principalement, magento est exécuté en utilisant php-fpm.Magento sur Nginx - Configuration

Mais certaines parties ne fonctionnent toujours pas, et j'ai essayé chaque wiki, blog, etc sur le web. Mon problème est que là où j'ai un pop-up Javascript sur les pages CMS et les blocs, principalement l'éditeur WYSIWYG tiny_mce, (/js/tiny_mce/plugins/advimage/image.htm etc) ils ouvrent un page not found.

Je ne sais pas ce que je devrais faire afin que cet éditeur affiche correctement.

En outre, le téléchargeur ne s'affiche pas.

Il semble que chacun d'eux utilise son propre index.php dans un dossier différent de root, donc devrais-je changer l'index à cela?

comme $document_root/downloader/index.php?

+0

Il semble que le réseau SE sera toujours obtenir de la manière de gens qui essaient d'aider les autres dans des situations comme celle-ci. Les utilisateurs frustrés devraient envisager de publier sur Webmasters ou Serverfault quand la Brigade de la Tour d'Ivoire arrive et ferme les informations utiles hors-sujet. Oh, BTW, je viens de marquer cela pour la réouverture et il semblerait que les modérateurs n'utilisent jamais nginx, donc il doit rester fermé. : P –

+0

Je suis le même problème, Et j'essaie la réponse ci-dessous, mais ma question est alors mis sur, où nous permettons tinyimce - js d'être lu par nginx: – Vic

Répondre

4

Nous avons magento installé à mydomain.com/store, et nous utilisons config suivante pour nginx:

server { 
    listen   <needed ip(s)>:80; 
    server_name  mydomain.com; 
    root   /www/mydomain; 

    location ~ /\. { 
     deny all; 
    } 


    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ { 
     access_log  off; 
     expires   30d; 
    } 

    location /store/ { 
     fastcgi_pass 127.0.0.1:9000; 
     include   fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root/store/index.php; 
     fastcgi_param SCRIPT_NAME /store/index.php; 

     fastcgi_index index.php; 
    } 

    location /store/static/ { } 
    location /store/skin/ { } 
    location /store/media/ { } 

    location /store/errors/ { } 

    location ~* /store/errors/.*\.xml$ { deny all; } 
    location ~* /store/errors/.*\.phtml$ { deny all; } 
    location ~* /store/errors/.*\.php$ { 
     fastcgi_pass 127.0.0.1:9000; 
     include   fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param SCRIPT_NAME /store/errors$fastcgi_script_name; 
     fastcgi_index index.php; 
     fastcgi_read_timeout 600; 
    } 

    location /store/js/ { } 

    location ~* /store/js/.*\.php$ { 
     fastcgi_pass 127.0.0.1:9000; 
     include   fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root/store/js$fastcgi_script_name; 
     fastcgi_param SCRIPT_NAME /store/js$fastcgi_script_name; 
     fastcgi_index index.php; 
     fastcgi_read_timeout 600; 
    } 
} 
8

Je vous suggère fortement de lire et suivre les nginx primer by Martin Fjordvald. J'utilise la configuration suivante pour Magento:

Il fonctionne non seulement très bien, mais il désactive access_log pour les images, etc. et dispose d'une configuration spéciale php-fpm. Veuillez noter que la racine du serveur est spécifiée dans le bloc de serveur. Plusieurs fichiers de configuration le spécifient incorrectement dans un bloc d'emplacement.

Magento fichier de configuration nginx: (Assurez-vous de remplacer tous les chemins et les noms de domaine en conséquence)

server { 
    listen 80; 
    #listen 443 default ssl; 
    server_name DOMAIN.COM; 
    #rewrite requests to www 
    rewrite^$scheme://www.DOMAIN.COM$request_uri permanent; 
} 

server { 
    listen 80; 
    #listen 443 default ssl; 
    #ssl_certificate /path/to/ssl.crt; 
    #ssl_certificate_key /path/to/ssl.key; 

    server_name www.DOMAIN.COM; 
    # most likely /var/www/... 
    root /path/to/files; 

    include /etc/nginx/restrictions.conf; 

    location/{ 
     index index.php; 
     if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)$") { 
      access_log off; 
      expires max; 
     } 
     try_files $uri $uri/ @handler; 
    } 

    # protect directories 
    location /app/ { 
     deny all; 
    } 
    location /includes/ { 
     deny all; 
    } 
    location /lib/ { 
     deny all; 
    } 
    location /lib/minify/ { 
     allow all; 
    } 
    location /media/downloadable/ { 
     deny all; 
    } 
    location /pkginfo/ { 
     deny all; 
    } 
    location /report/config.xml { 
     deny all; 
    } 
    location /var/ { 
     deny all; 
    } 

    location /var/export/ { 
     # restrict access to admins 
     auth_basic "Restricted"; 
     auth_basic_user_file htpasswd; 
     autoindex on; 
    } 

    location @handler { 
     rewrite ^(.*) /index.php?$1 last; 
    } 

    # include php specific configuration 
    include /etc/nginx/php.conf; 
} 

Ce fichier de configuration spécifique php-FPM qui intercepte les codes d'erreur et divise les informations de chemin correctement si vous avoir accès aux parties correctes du chemin en PHP. J'utilise également un socket Unix plutôt qu'un port en raison des améliorations de performances. Notez également que vous n'avez pas besoin de répéter les fastcgi_params déjà spécifiés dans fastcgi_params.

fastcgi_intercept_errors on; 

# this will allow Nginx to intercept 4xx/5xx error codes 
# Nginx will only intercept if there are error page rules defined 
# -- This is better placed in the http {} block as a default 
# -- in that virtual host's server block 

location ~ \.php$ { 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    # A handy function that became available in 0.7.31 that breaks down 
    # The path information based on the provided regex expression 
    # This is handy for requests such as file.php/some/paths/here/ 

    include fastcgi_params; 

    fastcgi_index index.php; 
    fastcgi_pass unix:/var/run/phpfpm.sock; 
} 

Mon fichier de configuration fastcgi_params est optimisée pour un petit serveur (< 1 Go de RAM). Assurez-vous de régler le vôtre en fonction des performances de votre serveur:

fastcgi_param QUERY_STRING  $query_string; 
fastcgi_param REQUEST_METHOD  $request_method; 
fastcgi_param CONTENT_TYPE  $content_type; 
fastcgi_param CONTENT_LENGTH  $content_length; 

fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name; 
fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 
fastcgi_param REQUEST_URI  $request_uri; 
fastcgi_param DOCUMENT_URI  $document_uri; 
fastcgi_param DOCUMENT_ROOT  $document_root; 
fastcgi_param SERVER_PROTOCOL  $server_protocol; 

fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
fastcgi_param SERVER_SOFTWARE  nginx/$nginx_version; 

fastcgi_param REMOTE_ADDR  $remote_addr; 
fastcgi_param REMOTE_PORT  $remote_port; 
fastcgi_param SERVER_ADDR  $server_addr; 
fastcgi_param SERVER_PORT  $server_port; 
fastcgi_param SERVER_NAME  $server_name; 

# PHP only, required if PHP was built with --enable-force-cgi-redirect 
fastcgi_param REDIRECT_STATUS  200; 

fastcgi_connect_timeout 90; 
fastcgi_send_timeout 180; 
fastcgi_read_timeout 360; 
fastcgi_buffer_size 1024k; 
fastcgi_buffers 8 512k; 
fastcgi_busy_buffers_size 1024k; 
fastcgi_temp_file_write_size 1024k; 
fastcgi_intercept_errors on; 
fastcgi_pass_header *;