x

Hauptkapitel

  1. LimeSurvey Cloud oder LimeSurvey CE?
  2. LimeSurvey Cloud - Schnellstartanleitung
  3. Installationsanleitung - LimeSurvey CE
  4. Wie man eine gute Umfrage erstellt (Anleitung)
  5. Erste Schritte
  6. Administrieren von LimeSurvey
  7. Umfragen erstellen - Einführung
  8. Umfrage-Einstellungen
  9. Umfrage-Menü
  10. Umfragestruktur
  11. Fragen
  12. Fragengruppen – Einführung
  13. Umfragen - Verwaltung
  14. Optionen der Umfrage-Symbolleiste
  15. Mehrsprachige Umfrage
  16. ExpressionScript Engine - Kurzanleitung
  17. Unkategorisierte und erweiterte Features
  18. Allgemeine FAQ - Häufig gestellte Fragen
  19. Fehlerbehebung
  20. Tipps und Tricks
  21. Lizenzbestimmungen
  22. Änderungshistorie
  23. Plugins
 Actions

LimeSurvey nginx Beispielkonfiguration

From LimeSurvey Manual

Diese Seite wurde möglicherweise maschinell übersetzt und kann Fehler enthalten. Englisches Original anzeigen · Übersetzung verbessern
This page is a translated version of the page LimeSurvey nginx example configuration and the translation is 100% complete.

Nginx-Konfigurationsbeispiel für LimeSurvey

Nachfolgend finden Sie eine Beispielkonfiguration für die Ausführung von LimeSurvey mit nginx und PHP-FPM. Passen Sie Pfade, Domainnamen und PHP-FPM-Socket-/Port-Einstellungen an Ihre Serverkonfiguration an.

Hinweis: Dies ist ein einfaches Beispiel. Überprüfen und passen Sie es stets an Ihre eigenen Sicherheitsanforderungen an, bevor Sie es in der Produktion einsetzen.

server {
    listen 80;
    server_name survey.example.com;
    # Redirect all HTTP traffic to HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name survey.example.com;

    root /var/www/limesurvey;
    index index.php;

    # SSL certificates
    ssl_certificate     /etc/ssl/certs/survey.example.com.crt;
    ssl_certificate_key /etc/ssl/private/survey.example.com.key;

    # Recommended SSL settings
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    client_max_body_size 100M;

    access_log /var/log/nginx/limesurvey_access.log;
    error_log  /var/log/nginx/limesurvey_error.log;

    location / {
        index  index.html index.php;
        try_files $uri $uri/ /index.php?$args;
    }

    # Deny access to directories that are only used on the server
    # ^~ gives these locations priority over the PHP location below, so PHP files in them are never executed
    location ^~ /application/ { deny all; }
    location ^~ /vendor/      { deny all; }
    location ^~ /docs/        { deny all; }
    location ^~ /locale/      { deny all; }
    location ^~ /modules/     { deny all; }
    location ^~ /tmp/runtime/ { deny all; }
    location ^~ /tests/       { deny all; }

    # Uploaded files: never execute scripts, never deliver files uploaded by participants directly
    location ^~ /upload/ {
        location ~* \.(php\d?|phtml|pl|py|pyc|pyo|cgi|pcgi\d?|sh|lua|icn)$ {
            deny all;
        }
        location ~ ^/upload/surveys/.*/fu_[a-z0-9_]*$ {
            deny all;
        }
        try_files $uri =404;
    }

    # Regular expression locations are checked in order and the first match wins,
    # so all deny rules below must stay above the PHP location

    # Deny access to hidden files and directories, except .well-known
    location ~ /\.(?!well-known) {
        deny all;
    }

    # Deny access to the internal directories of the KCFinder file manager
    location ~ ^/assets/packages/kcfinder/(conf|core|doc|integration|lang|lib|tpl)/ {
        deny all;
    }

    # Deny access to development, build and debug files in the LimeSurvey root directory
    location ~ ^/(setdebug\.php|open-api-gen\.php|composer\.(json|lock)|package\.json|yarn\.lock|gulpfile\.js|phpunit\.xml|psalm(-\w+)?\.xml|phpci\.yml|phpcs\.ruleset\.xml|publiccode\.yml|manifest\.yml|CONTRIBUTING\.md|README\.md|SECURITY\.md)$ {
        deny all;
    }

    location ~* \.(log|sql|htaccess)$ {
        deny all;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Erläuterung der wichtigsten Direktiven

  • fastcgi_pass: Verweist auf den PHP-FPM-Socket oder die TCP-Adresse, die PHP-Anfragen verarbeitet. Passen Sie dies an Ihre PHP-FPM-Pool-Konfiguration an.
  • try_files: Stellt sicher, dass URLs korrekt über den Front-Controller von LimeSurvey (index.php) geleitet werden.
  • client_max_body_size: Erhöht die maximale Upload-Größe, nützlich für Umfragen mit Fragen zum Datei-Upload.
  • Verweigerungsregeln: Blockieren den direkten Webzugriff auf Konfigurationsdateien, Protokolle und Anwendungsverzeichnisse, die niemals öffentlich erreichbar sein sollten. nginx prüft Locations mit Regulären Ausdrücken in der Reihenfolge, in der sie erscheinen, und der erste Treffer gewinnt. Platzieren Sie die Verweigerungsregeln oberhalb der PHP-Location, da sonst PHP-Dateien in diesen Verzeichnissen ausgeführt statt verweigert werden.
  • Installation in einem Unterverzeichnis: Das Beispiel geht davon aus, dass LimeSurvey im Document Root installiert ist. Wenn Sie es in einem Unterverzeichnis installieren, fügen Sie das Unterverzeichnis zu den Pfaden der Verweigerungsregeln hinzu, zum Beispiel location ^~ /limesurvey/vendor/.