Der OXID eShop ist primär auf den HTTP-Server Apache2 ausgelegt. Eine Suche ergab entweder nur Konfigurationsfragmente oder nicht funktionierende Lösungen. Wir haben einen der Suchtreffer genommen und die Rewrite Regeln vom Apache-Modul „mod_rewrite“ auf eine Nginx VHost Konfiguration portiert.
Der OXID eShop ist nun unter der folgenden Software-Konstellation lauffähig:
- Ubuntu 10.04.3 LTS
- Nginx 0.7.65-1ubuntu2.1
- PHP 5.3.2-1ubuntu4.10 (FastCGI)
- OXID eShop 4.5.4 CE
Konfigurationsvorlage: VHost
Um die Konfiguration zu übernhemen, muss diese Vorlage in einer Konfigurationsdatei für die VHosts gespeichert werden. Das Standardverzeichnis unter Ubuntu ist hierbei /etc/nginx/sites-available/ mit einem Symlink in /etc/nginx/sites-enabled.
Ferner sind die Konfigurationsparameter listen, server_name, root und index (optional: access_log und error_log) zu ergänzen. Ebenfalls muss, bei abweichender Konfiguration, die IP und/oder der Port für die Weiterleitung an den PHP-FastCGI-Prozess (in Zeile 7) angepasst werden.
server { # Hier die eigene VHost-Konfiguration einfügen # listen, server_name, root, access_log, error_log, index # OXID eShop Rewrite Regeln set $script_name $fastcgi_script_name; set $fcgi_php 127.0.0.1:9000; # Im Admin und Setup wird kein Rewrite auf die oxseo.php benötigt. location ~ ^/(setup|admin)/?$ { set $script_name /$1/index.php; include fastcgi_params.oxid; } # Zugriff auf die internen Dateien und Apache's ".ht" Dateien verweigern. location ~ (/\.ht|EXCEPTION_LOG\.txt|\.log$|\.tpl$|pkg.rev) { deny all; } # OXID 4.5.2+ spezifisch location ~ /out/pictures/.*(\.jpg|\.gif|\.png)$ { try_files $uri /core/utils/getimg.php; } # Für das "out" Verzeichnis sind keine Rewrite-Regeln anzuwenden. location ~ /(core|export|modules|out|tmp|views)/ { } # OXID eShop Setup: Prüfung auf "mod_rewrite". location = /oxseo.php { if ($args ~ "mod_rewrite_module_is=off") { rewrite /oxseo.php /oxseo.php?mod_rewrite_module_is=on? break; } set $script_name oxseo.php; include fastcgi_params.oxid; } # PHP-Dateien über PHP-FastCGI ausführen. location ~ \.php$ { # Zero-day exploit defense. # http://forum.nginx.org/read.php?2,88845,page=3 try_files $uri =404; include fastcgi_params.oxid; } # SEO URLs auf die oxseo.php leiten. location / { if (!-e $request_filename) { set $script_name /oxseo.php; } include fastcgi_params.oxid; } # Anfragen auf das Root Dokument auf die index.php leiten. location = / { fastcgi_index index.php; set $script_name $fastcgi_script_name; include fastcgi_params.oxid; } }
Konfigurationsdatei: fastcgi_params.oxid
Die Datei fastcgi_params wurde für die Verwendung von OXID eShop ebenfalls angepasst. Sie trägt den Namen fastcgi_params.oxid und liegt im Verzeichnis /etc/nginx/.
fastcgi_param SCRIPT_FILENAME $document_root$script_name; 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_NAME $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_pass $fcgi_php;
Fehlermeldungen und Verbesserungsvorschläge sind herzlich willkommen und können als Kommentar angehängt werden.
mitlerweile wissen viele wie das mit nginx und oxid geht, aber irgendwie scheint jeder zu ignorieren, dass der shop SSL braucht (sofern man produktiv arbeitet und nicht rumspielt)…. und die config dazu zeigt niemand… ist dies das letzte geheimnis der nginx/oxid welt ? ;)
Nicht jeder braucht SSL auf den App-Servern ;-) SSL-Offloading wird normalerweise (ab einer gewissen Größe des Shops) von Hardware übernommen, die auch die nötige Spezialisierung dafür besitzt. Und kleinere Shops werden den Unterschied nicht so extrem merken
Moin,
ich habe die Konfiguration als GitHub-Repository angelegt, damit Verbesserungsvorschläge einfacher eingebaut werden können.
Hier zu finden https://github.com/bkm-medien/nginx-oxid-setup
Hallo,
wollte nur sagen, für 4.94 CE geht die Konfiguration leider nicht.
Hier der Link zu meinem Beitrag im OXID – Forum:
http://forum.oxid-esales.com/showthread.php?t=26939
Gruß,
marsium
Servus,
sehr schicke Konfigurationsvorlage!
Man kann vielleicht noch dazu sagen, dass $quot; in Zeile 31 mit einem “ ersetzt werden sollte.
Für die Oxid-Installation grünes Licht und Demoserver läuft bei mir!
Setz die "’s doch mal bitte richtig in Zeile 31
(Hoffentlich) Gefixt. Das Plug-in fürs Code-Highlighting hat da ein wenig gepfuscht.