Mediawiki рабочий конфиг

Материал из Записки на полях
Перейти к навигации Перейти к поиску

Установка платформы делается аналогично Nextcloud на базе NGINX с SSL

Конфиг для Nginx

Рабочий конфиг для Nginx под MediaWiki:

server {
    listen 80;
    server_name wiki.mysite.ru;
    # Редирект на HTTPS версию сайта.
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name wiki.mysite.ru;

    # Задаем главную страницу
    index index.php index.html index.htm index.nginx-debian.html;

    # Включаем логгирование
    error_log /var/log/nginx/mediawiki.error.log;
    access_log /var/log/nginx/mediawiki.access.log;

    ### SSL CONFIGURATION ###
    ssl on;
    ssl_certificate /etc/letsencrypt/live/wiki.mysite.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.mysite.ru/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/wiki.mysite.ru/fullchain.pem;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EECDH+CHACHA20:EECDH+AES256:!AES128";
    ssl_stapling on;
    ssl_stapling_verify on;

    resolver 8.8.8.8 8.8.4.4;

    ### КОНЕЦ КОНФИГУРАЦИИ SSL ###
    # Дополнительные заголовки для увеличения безопасности, в частности, первая строчка добавляет поддержку HSTS

    add_header Strict-Transport-Security 'max-age=631138519; includeSubDomains; preload' always;
    add_header Content-Security-Policy   "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' blob data:";
    add_header X-Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' blob data:";
    add_header X-WebKit-CSP              "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' blob data:";
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Xss-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Proxy-Cache "EXPIRED" always;

    # Корневая директория сайта
    root /usr/share/nginx/html/mediawiki;

    client_max_body_size 50m;
    client_body_timeout 20;
    fastcgi_buffers 64 4K;

    location ~ /.well-known {
        root /usr/share/nginx/html/mediawiki;
        allow all;
    }

    location / {
        try_files $uri $uri/ @rewrite;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?title=$1&$args;
    }

    location ^~ /maintenance/ {
        return 403;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        try_files $uri /index.php;
        expires max;
        log_not_found off;
    }

    location = /_.gif {
        expires max;
        empty_gif;
    }

    location ^~ /cache/ {
        deny all;
    }

    location /dumps {
        root /var/www/mediawiki/local;
        autoindex on;
    }
    location ^~ /uploads/ {
    }

    location ~ ^\/w/.+$ {
        if ($request_uri ~ ^/w/images)     { break; }
        if ($request_uri ~ ^/w/resources)  { break; }
        if ($request_uri ~ ^/w/index\.php) { break; }
        rewrite ^/w/(.+)$ /w/index.php?title=$1 last;
    }
}

Настройка кэширования

Для APCu. В LocalSettings.php прописать

$wgMainCacheType = CACHE_ACCEL;