Zum Hauptinhalt springen

NGINX

Open2C ist problemlos mit NGINX auf entsprechenden Servern mit optimiertem PHP-FPM-Setup lauffähig.

Ein NGINX-Setup richtet sich an Profis. Die folgende Beispielkonfiguration enthält die Fragmente, die für Open2C relevant sind:

  • Unterstützung für das Open2C-Hash-Cache-Feature: Statische Dateien erhalten einen dynamischen Dateinamen, der solange gleich bleibt, bis sich die Datei ändert. Ermöglicht ein beliebig langes Caching und damit geringer Datenübertragung und höhere Performance
  • wir verbieten den Zugriff auf bestimmte Dateien oder Verzeichnisse. In einem Apache-Setup würde dies über .htaccess-Anweisungen erledigt
  • wichtig: wir setzen die Umgebungsvariable URLREWRITE auf YES: Open2C aktiviert dann das Feature der sprechenden Pfade bzw. Slugs

Beispielkonfiguration


...

# http context

upstream fastcgi_backend {
server 127.0.0.1:9000;
keepalive 32;
}

...

# server context

# Do rewrites for the Open2C Hash-Cache-Feature!
rewrite "^(/backend/static|/backend/mat|/images|/imageshows|/mat|/plugins|/static|/themes)(/.*)\.([a-z0-9]{32})\.([a-zA-Z0-9]+)$" $1$2.$4 last;

# do not allow access to php files in these directories
location ~* /(?:config|files|images|imageshows|storage)/.*\.php$ {
deny all;
}

# do not allow access these directories
location ~ /(continuity|config|storage|lib/schema|lib/templates|files|tmp)\/ {
deny all;
}

location ^~ /inc/ {
deny all;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_param HTTP_PROXY "";
# or: fastcgi_pass 127.0.0.1:9000;
fastcgi_pass fastcgi_backend;
fastcgi_keep_conn on;
fastcgi_param http_x_http_version 1.1;
fastcgi_param http_x_connection "";
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

# important hint for Open2C and the Slugs feature!
fastcgi_param URLREWRITE YES;
}

# Set headers related to security, for example:
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options sameorigin;
add_header Content-Security-Policy "frame-ancestors 'self';";
add_header Referrer-Policy same-origin;

...