x

Основні розділи

  1. LimeSurvey Cloud проти LimeSurvey CE
  2. LimeSurvey Cloud - Короткий посібник із початку роботи
  3. Встановлення - LimeSurvey CE
  4. Як створити хороше опитування (посібник)
  5. Початок роботи
  6. Адміністрування LimeSurvey
  7. Опитування - вступ
  8. Налаштування опитування
  9. Меню опитування
  10. Структура опитування
  11. Питання - вступ
  12. Групи питань - вступ
  13. Опитування - керування
  14. Параметри панелі інструментів опитування
  15. Багатомовне опитування
  16. ExpressionScript Engine - Короткий посібник
  17. Некатегоризовані та розширені функції
  18. Загальні поширені запитання
  19. Усунення несправностей
  20. Обхідні рішення
  21. Ліцензія
  22. Журнал змін версій
  23. Плагіни
 Actions

Приклад конфігурації nginx для LimeSurvey

From LimeSurvey Manual

Ця сторінка, можливо, перекладена машинним способом і може містити помилки. Показати англійський оригінал · Покращити цей переклад
This page is a translated version of the page LimeSurvey nginx example configuration and the translation is 100% complete.

Приклад конфігурації Nginx для LimeSurvey

Нижче наведено приклад конфігурації для запуску LimeSurvey за допомогою nginx і PHP-FPM. Змініть шляхи, доменні імена та налаштування сокета/порту PHP-FPM відповідно до налаштувань вашого сервера.

Примітка: Це базовий приклад. Завжди перевіряйте та адаптуйте його відповідно до ваших вимог безпеки, перш ніж використовувати в робочому середовищі.

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;
    }
}

Пояснення ключових директив

  • fastcgi_pass: вказує на сокет PHP-FPM або TCP-адресу, що обробляє запити PHP. Змініть його відповідно до конфігурації вашого пулу PHP-FPM.
  • try_files: забезпечує правильну маршрутизацію URL-адрес через фронт-контролер LimeSurvey (index.php).
  • client_max_body_size: збільшує максимальний розмір файлів, які можна завантажити, що корисно для опитувань із запитаннями із завантаженням файлів.
  • Правила заборони: блокують прямий веб-доступ до конфігураційних файлів, журналів і каталогів застосунку, які ніколи не повинні бути публічно доступними. nginx перевіряє розташування з регулярними виразами в порядку їх появи, і спрацьовує перший збіг. Розміщуйте правила заборони вище за розташування PHP, інакше PHP-файли в цих каталогах будуть виконуватися, а не блокуватися.
  • Встановлення в підкаталозі: у прикладі передбачається, що LimeSurvey встановлено в кореневому каталозі документів. Якщо ви встановлюєте його в підкаталозі, додайте цей підкаталог до шляхів у правилах заборони, наприклад location ^~ /limesurvey/vendor/.