Shopware 4.3 unter Plesk 12 mit NGINX - Erfahrungen?!

http://download1.parallels.com/Plesk/Do … =72064.htm http://stackoverflow.com/questions/2095 … -subdomain http://dtbaker.net/random-linux-posts/p … tual-host/ Dazu gibt es massig Google Treffer :wink: Allerdings nutzen wir kein Plesk, gibt also keine Garantien :x

Nene, da muss es eine Lösung gäben ohne aus der Plesk Oberfläche rauszugehen. Viele der Dateien sind ja von Plesk aus schon vorkonfiguriert. Aber trotzdem Danke :wink:

Hast du dir den Beitrag denn durchgelesen ? … [quote]Additional nginx directives. You can add several custom nginx directives at once in the Additional nginx directives field. This field corresponds to vhost_nginx.conf file. [/quote]

Ja, korrekt. Aber die Frage ist ja, was schreibt man da rein? Siehe Posts vor mir, wir habe Problem das in diesem Feld nicht alle Befehle akzeptiert werden. Siehe auch unter dem folgendem Beitrag

Verwende mal folgende Config (“Intelligente Bearbeitung statischer Dateien” einschalten, “Statische Dateien direkt durch Nginx bedienen” aus, “PHP von Nginx verarbeiten lassen” ein. location = / { index index.html index.php shopware.php; rewrite shopware.dll /shopware.php; rewrite files/documents/.* /engine last; rewrite backend/media/(.*) /media/$1 last; if (!-e $request_filename){ rewrite . /shopware.php last; } } # Shopware >= 4.3 install / update location /recovery/install { index index.php; try_files $uri /recovery/install/index.php?$args; } location /recovery/update { index index.php; try_files $uri /recovery/update/index.php?args; } location = /favicon.ico { log\_not\_found off; access\_log off; } location = /templates/\_default/backend/\_resources/resources/css/icon-set.css { gzip off; } ## Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS\_Store (Mac). location ~ /\. { deny all; access\_log off; log\_not\_found off; } ## Deny all attems to access possible configuration files location ~ \.(tpl|yml|ini|log) { deny all; } ## Deny access to media upload folder location ^~ /media/temp/ { deny all; } location ^~ /cache/ { deny all; } location ^~ /files/documents/ { deny all; } # Block direct access to ESDs, but allow the follwing download options: # * ‘PHP’ (slow) # * ‘X-Accel’ (optimized) # Also see http://wiki.shopware.com/ESD_detail_111 … ware_4.2.2 location ^~ /files/552211cce724117c3178e3d22bec532ec/ { internal; } # Breaks backend/media/ rewrite # #location ~ /(engine|files|templates|media)/ { # location ~ .php$ { # return 403; # } #} location ~* “^/themes/Frontend/Responsive/frontend/_public/vendors/fonts/open-sans-fontface/(?:.+).(?:ttf|eot|svg|woff)" { expires max; add\_header Cache-Control "public"; access\_log off; log\_not\_found off; } location ~\* "^/themes/Frontend/Responsive/frontend/\_public/src/fonts/(?:.+)\.(?:ttf|eot|svg|woff)” { expires max; add_header Cache-Control “public”; access_log off; log_not_found off; } location ~* "^/web/cache/(?:[0-9]{10})_(?:.+).(?:js|css)" { expires max; add\_header Cache-Control "public"; access\_log off; log\_not\_found off; } ## All static files will be served directly. location ~\* ^.+\.(?:css|cur|js|jpe?g|gif|ico|png|html|xml|pdf) { ## Defining rewrite rules rewrite files/documents/.* /engine last; rewrite backend/media/(.*) /media/$1 last; expires 1w; add_header Cache-Control “public, must-revalidate, proxy-revalidate”; access_log off; # The directive enables or disables messages in error_log about files not found on disk. log_not_found off; tcp_nodelay off; ## Set the OS file cache. open_file_cache max=3000 inactive=120s; open_file_cache_valid 45s; open_file_cache_min_uses 2; open_file_cache_errors off; ## Fallback to shopware ## comment in if needed #try_files $uri @shopware; } ## XML Sitemap support. location = /sitemap.xml { log_not_found off; access_log off; try_files uri @shopware; } ## robots.txt support. location = /robots.txt { log\_not\_found off; access\_log off; } #location @shopware { # rewrite / /shopware.php; #} location ~ \.php { try_files $uri $uri/ =404; } location ~ /(engine|images/[a-z]+|files|templates)/ { rewrite files/documents/.* /engine last; } if (!-e request\_filename){ rewrite ^(.\*) /shopware.php break; }

Hallo zusammen Hat jemand eine Konfig für die 5er Version? Vielen Dank schon im voraus… Gruss Marc

Hi Marc, anbei die Shopware 5 Konfig für Plesk 12 mit nginx und PHP-FPM Handling. nginx Einstellungen in Plesk: Intelligente Bearbeitung statischer Dateien = an Statische Dateien direkt durch Nginx bedienen = aus (diese sind in der Konfig noch mit Expire Direktive optimiert.) PHP von Nginx verarbeiten lassen = an Zusätzliche Nginx-Anweisungen: ----------------------------------------------- location /install/ { location /install/assets { } if (!-e $request_filename){ rewrite . /install/index.php last; } } location /update/ { location /update/assets { } location /update/templates { } if (!-e $request_filename){ rewrite . /update/index.php last; } } location /recovery/install/ { location /recovery/install/assets { } if (!-e $request_filename){ rewrite . /recovery/install/index.php last; } } location /recovery/update/ { location /recovery/update/assets { } if (!-e request\_filename){ rewrite . /recovery/update/index.php last; } } location = /favicon.ico { log\_not\_found off; access\_log off; } location = /templates/\_default/backend/\_resources/resources/css/icon-set.css { gzip off; } ## Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS\_Store (Mac). location ~ /\. { deny all; access\_log off; log\_not\_found off; } ## Deny all attems to access possible configuration files location ~ \.(tpl|yml|ini|log) { deny all; } ## Deny access to media upload folder location ^~ /media/temp/ { deny all; } location ^~ /cache/ { deny all; } location ^~ /files/documents/ { deny all; } # Block direct access to ESDs, but allow the follwing download options: # * ‚PHP‘ (slow) # * ‚X-Accel‘ (optimized) # Also see http://wiki.shopware.com/ESD_detail_111 … ware_4.2.2 location ^~ /files/552211cce724117c3178e3d22bec532ec/ { internal; } # Breaks backend/media/ rewrite # #location ~ /(engine|files|templates|media)/ { # location ~ .php$ { # return 403; # } #} location ~* „^/themes/Frontend/Responsive/frontend/_public/vendors/fonts/open-sans-fontface/(?:.+).(?:ttf|eot|svg|woff)" { expires max; add\_header Cache-Control "public"; access\_log off; log\_not\_found off; } location ~\* "^/themes/Frontend/Responsive/frontend/\_public/src/fonts/(?:.+)\.(?:ttf|eot|svg|woff)“ { expires max; add_header Cache-Control „public“; access_log off; log_not_found off; } location ~* "^/web/cache/(?:[0-9]{10})_(?:.+).(?:js|css)" { expires max; add\_header Cache-Control "public"; access\_log off; log\_not\_found off; } ## All static files will be served directly. location ~\* ^.+\.(?:css|cur|js|jpe?g|gif|ico|png|html|xml|pdf) { ## Defining rewrite rules rewrite files/documents/.* /engine last; rewrite backend/media/(.*) /media/$1 last; expires 1w; add_header Cache-Control „public, must-revalidate, proxy-revalidate“; access_log off; # The directive enables or disables messages in error_log about files not found on disk. log_not_found off; tcp_nodelay off; ## Set the OS file cache. open_file_cache max=3000 inactive=120s; open_file_cache_valid 45s; open_file_cache_min_uses 2; open_file_cache_errors off; ## Fallback to shopware ## comment in if needed #try_files $uri @shopware; } ## XML Sitemap support. location = /sitemap.xml { log_not_found off; access_log off; try_files $uri @shopware; } ## Facebook Export support. location = /backend/export/index/facebook.xml { log_not_found off; access_log off; try_files $uri @shopware; } ## Export support. location = /backend/export/index/export.xml { log_not_found off; access_log off; try_files uri @shopware; } ## robots.txt support. location = /robots.txt { log\_not\_found off; access\_log off; } location @shopware { rewrite / /shopware.php; } location ~ \.php { try_files $uri $uri/ =404; } fastcgi_param HTTP_AUTHORIZATION $http_authorization; ----------------------------------------------- Falls Du eine Shopware 4 auf 5 aktualisieren möchtest, bitte PHP-FPM vor dem Update abschalten (sonst schlägt das Update fehl) - Ursache ist, dass Plesk keine location / Direktive erlaubt. Nach erfolgtem Update kannst Du die o.a. Konfig jedoch wieder aktivieren. Hierzu haben wir einen Workaround entwickelt über ein Plesk Custom-Domain-Template, welches wir auf Anfrage gerne bereitstellen.

Hallo, ich bekomm bei dieser Einstellung immer die Fehlermeldung, dass ich die PHP-Version 5.3 benutzen würde obwohl ich in Plesk 5.6 ausgewählt habe und auch in der PHP_INFO steht 5.6 drin. Auch wenn ich außerhalb von der shopware.php version_compare(PHP_VERSION, ‘5.4.0’, ’

Hallo, ich finde das Eingabefeld für zusätzliche Nginx-Anweisungen in Plesk 12.0.18 einfach nicht. Ich habe online Screenshots gefunden, die eigentlich zeigen sollten, wo sich das Eingabefeld befindet. Bei mir ist da aber nichts. Hätte jemand nen Tipp? MFG Nils

@AIXPRO Vielen Dank für die Konfiguration. Leider kommt ein 403 Fehler. Sobald ich noch folgende Zeilen hinzufüge , funktioniert es: location = / { index index.html index.php shopware.php; if (!-e $request\_filename){ rewrite . /shopware.php last; } } Oder kann man bei diesen noch etwas weglassen? Ebenfalls lässt sich das Backend dann nur mit shopware.php/backend aufrufen. Hast du zufällig auch noch die HTTPS Variante parat? @Kenny Hast du nginx-Komponente installiert? Ein neustart der Komponente kann ebenfalls helfen.

@pibivibi: PHP-FPM verwendet ohne weitere Tweaks die serverseitige PHP Version (also nicht die für FastCGI hinterlegte Version). Im Webtatic Repository (siehe https://webtatic.com/packages/php56/) findet Du z.B. entsprechende Pakete, um die serverseitige PHP Version bei CentOS auf PHP 5.6 anzuheben. @Kenny: In Plesk unter Tools & Einstellungen -> Updates und Upgrades erstmal kontrollieren, ob nginx + PHP-FPM überhaupt installiert sind. Sind beide Dienste installiert und gestartet, kannst Du im jeweiligen Webspace unter „Hosting Einstellungen“ auf PHP-FPM Modus umschalten. Sobald erfolgt, müssen alsdann nginx Direktiven für Shopware unter „Hosting Einstellungen“ um Feld „zusätzliche nginx-Anweisungen“ hinterlegt werden. Folgende nginx Direktiven eignen sich sowohl für HTTPS als auch Shopware 5.1.x location = / { index index.html index.php shopware.php; rewrite shopware.dll /shopware.php; rewrite files/documents/.* /engine last; rewrite backend/media/(.*) /media/$1 last; if (!-e $request_filename){ rewrite . /shopware.php last; } } # Shopware >= 4.3 install / update location /recovery/install { index index.php; try_files $uri /recovery/install/index.php?$args; } location /recovery/update { index index.php; try_files $uri /recovery/update/index.php?args; } location = /favicon.ico { log\_not\_found off; access\_log off; } location = /templates/\_default/backend/\_resources/resources/css/icon-set.css { gzip off; } ## Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS\_Store (Mac). location ~ /\. { deny all; access\_log off; log\_not\_found off; } ## Deny all attems to access possible configuration files location ~ \.(tpl|yml|ini|log) { deny all; } ## Deny access to media upload folder location ^~ /media/temp/ { deny all; } # Shopware < 5.1 caches location ^~ /cache/ { deny all; } # Shopware >= 5.1 caches and logs location ^~ /var/ { deny all; } location ^~ /files/documents/ { deny all; } ## Fallback for old media paths location ^~ /media/ { try_files uri /shopware.php?controller=Media&action=fallback; } # Block direct access to ESDs, but allow the follwing download options: # \* 'PHP' (slow) # \* 'X-Accel' (optimized) # Also see [url=http://wiki.shopware.com/ESD\_detail\_1116.html#Ab\_Shopware\_4.2.2]http://wiki.shopware.com/ESD\_detail\_111 ... ware\_4.2.2[/url] location ^~ /files/552211cce724117c3178e3d22bec532ec/ { internal; } # Breaks backend/media/ rewrite # #location ~ /(engine|files|templates|media)/ { # location ~ \.php { # return 403; # } #} location ~* „^/themes/Frontend/Responsive/frontend/_public/vendors/fonts/open-sans-fontface/(?:.+).(?:ttf|eot|svg|woff)" { expires max; add\_header Cache-Control "public"; access\_log off; log\_not\_found off; } location ~\* "^/themes/Frontend/Responsive/frontend/\_public/src/fonts/(?:.+)\.(?:ttf|eot|svg|woff)“ { expires max; add_header Cache-Control „public“; access_log off; log_not_found off; } location ~* "^/web/cache/(?:[0-9]{10})_(?:.+).(?:js|css)" { expires max; add\_header Cache-Control "public"; access\_log off; log\_not\_found off; } ## All static files will be served directly. location ~\* ^.+\.(?:css|cur|js|jpe?g|gif|ico|png|html|xml|pdf) { ## Defining rewrite rules rewrite files/documents/.* /engine last; rewrite backend/media/(.*) /media/$1 last; expires 1w; add_header Cache-Control „public, must-revalidate, proxy-revalidate“; access_log off; # The directive enables or disables messages in error_log about files not found on disk. log_not_found off; tcp_nodelay off; ## Set the OS file cache. open_file_cache max=3000 inactive=120s; open_file_cache_valid 45s; open_file_cache_min_uses 2; open_file_cache_errors off; ## Fallback to shopware ## comment in if needed #try_files $uri @shopware; } ## XML Sitemap support. location = /sitemap.xml { log_not_found off; access_log off; try_files uri @shopware; } ## robots.txt support. location = /robots.txt { log\_not\_found off; access\_log off; } location ~ \.php { try_files $uri $uri/ =404; } location ~ /(engine|images/[a-z]+|files|templates)/ { rewrite files/documents/.* /engine last; } if (!-e request\_filename){ rewrite ^(.\*) /shopware.php break; }

@AIXPRO Vielen Dank, funktioniert super. Ich wollte nur noch alles auf die https://www. Variante umleiten und habe folgende Zeilen hinzugefügt: if ($server\_port !~ "^443$"){ set $rule\_0 1; } if ($host !~ www\.(.\*)){ set $rule\_0 1; } if ($rule\_0 = "1"){ rewrite /(.\*) https://www.$server\_name$request\_uri? permanent; } Habe mit diesem Code leichte Backend Probleme. Um genauer zu sein, die Artikelbilder in dem Medienmanager sowie bei der Artikelbearbeitung werden nicht angezeigt. Mit FireBug ist eine falsche Umleitung der Bilder auf: https://www.domain.de/backend/media…. zu sehen. Dabei muss das „backend“ aus der URL wegfallen. Eine Idee?

Komisch, dass sich die “echte nginx Server” Fraktion nicht meldet :slight_smile: Zunächst solltest Du natürlich im Shopware Backend “SSL” und “SSL überall verwenden” aktivieren, damit https:// URL´s hinterlegt werden und es nicht zu einer Menge Redirects für jede Anfrage kommt. In Plesk unter “zusätzliche nginx Anweisungen” im Block ganz oben folgendes ergänzen: ---------------------------------------------- if ($scheme !~* ^https ){ rewrite ^ https://$server_name$request_uri? permanent; } ---------------------------------------------- VG

SSL ist überall aktiviert und deine Anweisung ist ja das gleiche wie meine bloß ohne den www. Teil. Ist das selbe Phänomen: Ein 404 beim Laden der Bilder im Backend. URL wird wie folgt aufgebaut: https://meinedomain.de/backend/media/image/…. Verstehe nicht ganz wieso das „backend“ noch mit reinkommt zum einen. Zum anderem kann die Homepage mit deiner Variante auch ohne „www“ aufgerufen werden. Zu mindestens das Backend.

Hm - melde Dich mal in unserem Demo Shop an unter https://shopware5.aixpro.de (Benutzer: admin, Kennwort: aixpro2015) - dieser läuft mit folgenden zusätzlichen nginx Anweisungen als auch PHP7 auf Basis von Plesk 12.5: ------------------------------------------------------------ if ($scheme !~* ^https ){ rewrite ^ https://$server_name$request_uri? permanent; } location = / { index index.html index.php shopware.php; rewrite shopware.dll /shopware.php; rewrite files/documents/.* /engine last; rewrite backend/media/(.*) /media/$1 last; if (!-e $request_filename){ rewrite . /shopware.php last; } } # Shopware >= 4.3 install / update location /recovery/install { index index.php; try_files $uri /recovery/install/index.php?$args; } location /recovery/update { index index.php; try_files $uri /recovery/update/index.php?args; } location = /favicon.ico { log\_not\_found off; access\_log off; } location = /templates/\_default/backend/\_resources/resources/css/icon-set.css { gzip off; } ## Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS\_Store (Mac). location ~ /\. { deny all; access\_log off; log\_not\_found off; } ## Deny all attems to access possible configuration files location ~ \.(tpl|yml|ini|log) { deny all; } ## Deny access to media upload folder location ^~ /media/temp/ { deny all; } # Shopware < 5.1 caches location ^~ /cache/ { deny all; } # Shopware >= 5.1 caches and logs location ^~ /var/ { deny all; } location ^~ /files/documents/ { deny all; } ## Fallback for old media paths location ^~ /media/ { try_files uri /shopware.php?controller=Media&action=fallback; } # Block direct access to ESDs, but allow the follwing download options: # \* 'PHP' (slow) # \* 'X-Accel' (optimized) # Also see [url=http://wiki.shopware.com/ESD\_detail\_1116.html#Ab\_Shopware\_4.2.2]http://wiki.shopware.com/ESD\_detail\_111 ... ware\_4.2.2[/url] location ^~ /files/552211cce724117c3178e3d22bec532ec/ { internal; } # Breaks backend/media/ rewrite # #location ~ /(engine|files|templates|media)/ { # location ~ \.php { # return 403; # } #} location ~* “^/themes/Frontend/Responsive/frontend/_public/vendors/fonts/open-sans-fontface/(?:.+).(?:ttf|eot|svg|woff)" { expires max; add\_header Cache-Control "public"; access\_log off; log\_not\_found off; } location ~\* "^/themes/Frontend/Responsive/frontend/\_public/src/fonts/(?:.+)\.(?:ttf|eot|svg|woff)” { expires max; add_header Cache-Control “public”; access_log off; log_not_found off; } location ~* “^/web/cache/(?:[0-9]{10})_(?:.+).(?:js|css)$” { expires max; add_header Cache-Control “public”; access_log off; log_not_found off; } ## Defining rewrite rules rewrite files/documents/.* /engine last; rewrite backend/media/(.*) /media/$1 last; access_log off; # The directive enables or disables messages in error_log about files not found on disk. tcp_nodelay off; ## Set the OS file cache. open_file_cache max=3000 inactive=120s; open_file_cache_valid 45s; open_file_cache_min_uses 2; open_file_cache_errors off; ## Fallback to shopware ## comment in if needed #try_files $uri @shopware; ## XML Sitemap support. location = /sitemap.xml { log_not_found off; access_log off; try_files uri @shopware; } ## robots.txt support. location = /robots.txt { log\_not\_found off; access\_log off; } location ~ \.php { try_files $uri $uri/ =404; } location ~ /(engine|images/[a-z]+|files|templates)/ { rewrite files/documents/.* /engine last; } if (!-e request\_filename){ rewrite ^(.\*) /shopware.php break; } ------------------------------------------------------------ Anzumerken ist noch, dass wir aktuell “Statische Dateien direkt durch nginx bedienen” aktiviert haben zur Steuerung der Expires Header. In Plesk 12.5 gibt es einen Bug im Default Domain-Template, welches Angaben zu Expires in Deinen individuellen nginx-Direktiven überschreibt. Bis ein Patch zur Verfügung steht, verwenden wir hierfür ein modifiziertes Custom-Template - diese kannst Du unter /usr/local/psa/admin/conf/templates anlegen. VG

Ok, vielen Dank. Es lag an der Shopware Version. Hatte in der Produktivumgebung 5.0.4. Bei 5.1.1 funktioniert alles prima. Ansonsten schöne Feiertage und einen guten Rutsch :wink:

@AIXPRO
Laufen die Updates bei dir mit dieser Konfiguration problemlos? Oder musst du immer kurz während des Updates auf Apache umstellen?
 

Jemand eine Info?

Anbei die notwendigen Anpassungen für nginx/PHP-FPM Modus mit Plesk mittels Custom-Config, welche wir bei uns einsetzen.

https://oc.aix-cloud.de/s/7jsqPfy6BMcnBOx

VG

Vielen Dank!

Wie sind denn eigentlich die Erfahrungswerte, macht es überhaupt Sinn, nur NGINX zu betreiben. Bei Plesk gibt es noch die Option: Apache + PHP-FPM + NGINX (Proxy) einzusetzen. Gibt es da Leistungsunterschiede? Oder erst ab einer gewissen Menge an Seitenaufrufe?