Hallo!
Ich versuche Oxid eShop auf Nginx und PHP-FPM zum Laufen zu bringen. Sowiet funktioniert auch alles. Nur wenn ich statische HTML-Dokumente oder robots.txt aufrufe wird der Zugriff verweigert.
Inspiriert von dem Blogartikel auf http://blog.mayflower.de/archives/777-Nginx-Rewrite-Regeln-fuer-OXID-eShop.html habe ich folgende Vhost-Konfiguration.
--------------------------------------------------
server {
listen 80;
root /www/example.com;
index index.php index.html;
server_name www.example.com;
# OXID eShop Rewrite Regeln
set $script_name $fastcgi_script_name;
set $fcgi_php 127.0.0.1:9000;
fastcgi_read_timeout 1800;
# Im Admin und Setup wird kein Rewrite auf die oxseo.php benötigt.
location ~ ^/(setup|admin|Gutschein|Mails|views|core)/?$ {
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 ~ /(export|modules|out|tmp|views|Gutschein/*|Mails/*|Banner)/ {
}
# 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$ {
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;
}
}
--------------------------------------------------
Wenn ich den folgenden teil auskommentiere, werden die statischen Dateien ausgeliefert, mit dem Block gibt es ein 403 Forbidden.
# SEO URLs auf die oxseo.php leiten.
location / {
if (!-e $request_filename) {
set $script_name /oxseo.php;
}
include fastcgi_params.oxid;
}
Entdeckt jemand einen Fehler in der Konfiguration oder kann ein besseres Beipiel geben das einwandfrei funktioniert?