Содержание

nginx

FIXME Эту страницу нужно немного подчистить. Желательно, чтобы это сделал опытный пользователь nginx. В вики nginx

есть рецепт , а ниже — несколько примеров. В идеале их следует объединить в одну связную установку. Следует добавить пояснение по различным установкам с использованием (F) CGI и FPM. Установку необходимых компонентов для разных операционных систем следует перенести в отдельный раздел — в любом случае конфигурация не должна зависеть от особенностей ОС .

DokuWiki с nginx на Ubuntu

Вам необходимо установить nginx и php-fpm. Если у вас текущая версия, то это будет как минимум php7.0.

Конфигурация nginx ниже основана в основном на образце конфигурации на этом сайте, обновленном для работы с текущими версиями (протестировано с 16.04 LTS). С конфигурацией кэширования изображений с этого сайта

При первоначальной настройке вы не сможете запуститься, пока не закомментируете deny в файле install.php. Это полная конфигурация, которую мы используем, вы можете просто скопировать и вставить, а также изменить имена по своему вкусу. Пожалуйста, учтите, что это работает как vhost. Вам, скорее всего, нужно будет поместить его в /etc/nginx/sites-enabled по умолчанию (или куда-то еще, если вы изменили конфигурацию).

Обратите внимание, что это https, поэтому вам понадобится сертификат или самоподписанный сертификат для настройки таким образом. Конфигурация для сертификата https типична, как показано ниже (чтобы получить хорошую оценку безопасности):

# файл с сертификатом + промежуточные данные 
ssl_certificate /etc/ssl/certs/example_com_pack.crt;
ssl_certificate_key /etc/ssl/private/example_com.key;
ssl_session_timeout 5m;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
# Используйте 2048-битные параметры ключа Diffie-Hellman RSA 
# (в противном случае Nginx использует по умолчанию 1024-битные параметры, что снижает надежность шифрования # при использовании PFS) 
# Сгенерировано OpenSSL с помощью следующей команды: 
# openssl dhparam -outform pem -out /etc/nginx/ssl/dhparam2048.pem 2048 
ssl_dhparam /etc/ssl/private/dhparam2048.pem;
server {
    listen               80;
    listen                   [::]:80;
    server_name          wiki.domain.example;
    return 301 https://$server_name$request_uri;
}
 
server {
    listen [::]:443 ssl;
    listen 443 ssl;
 
    server_name wiki.domain.example;
 
     # Максимальный размер загружаемого файла составляет 4 МБ — при необходимости измените его соответствующим образом 
    client_max_body_size 4M;
    client_body_buffer_size 128k;
 
    root /dokuwiki;
    index doku.php;
 
    #Не забудьте закомментировать следующее при установке и раскомментировать после завершения. 
    location ~ /(conf/|bin/|inc/|vendor/|install.php) { deny all; }
 
    #Поддержка расположения  X-Accel-Redirect ~ ^/data/ {  internal  ;  }
    location ~ ^/data/ { internal ; }
 
    location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ {
        expires 365d;
    }
 
    location / { try_files $uri $uri/ @dokuwiki; }
 
    location @dokuwiki {
        # перезаписывает "doku.php/" из URL-адресов, если вы установили настройку userrewrite в .htaccess на странице конфигурации dokuwiki 
        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
        rewrite ^/(.*) /doku.php?id=$1&$args last;
    }
 
    location ~ \.php$ {
        try_files $uri $uri/ /doku.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param REDIRECT_STATUS 200;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        # fastcgi_pass unix:/var/run/php5-fpm.sock; #старая версия php 
    }
}

После размещения этого файла необходимо перезапустить nginx и php-fpm.

  service php7.0-fpm reload && service nginx reload
  # service php5-fpm reload && service nginx reload # for the older php5 version

Если вы получаете ошибку шлюза 502, это обычно означает, что возникла проблема с конфигурацией сокета phpfpm (обычно неправильный путь к сокету). Пожалуйста, ознакомьтесь с документацией по phpfpm и nginx.

DokuWiki с nginx на Windows

Dokuwiki был извлечен в E:\www\dokuwiki.

Это пример записи dokuwiki в nginx.conf, работающем на Windows:

location ~ ^/dokuwiki/.*\.php {
    root           E:/www;	         
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME    E:/www$fastcgi_script_name;
    fastcgi_param  QUERY_STRING       $query_string;
    include        fastcgi_params;
}
# обслуживаем статические файлы 
location ~ ^/dokuwiki/lib/  {
    root         E:/www;		
    expires 30d;
}
 
location ~ ^/dokuwiki/conf/ { deny all; }
location ~ ^/dokuwiki/data/ { deny all; }
location ~ /\.ht            { deny all; }

FastCGI и nginx были запущены с помощью этого пакетного файла:

ECHO Starting PHP FastCGI...
RunHiddenConsole.exe E:\appl\php-5.2.9-2-Win32\php-cgi.exe -b 127.0.0.1:9000
ECHO Starting nginx...
cd /d D:\nginx-0.8.39 && start nginx.exe

Или вы можете попробовать Start-Nginx, если вы предпочитаете обычный графический интерфейс Windows.

Конфигурация Linux для Debian 8

У вас уже должны быть установлены nginx и php5-fpm.

В зависимости от вашего выбора ваша PHP-часть в документах сайта может быть с носками или портами.

Вы просто копируете и вставляете то, что работает для вас.

Эта конфигурация сайта не имеет SSL и использует перезапись URL

в этом примере dokuwiki находится в корне домена с именем exempl.net

Как root:

создайте новый файл сайта nginx:

nano /etc/nginx/sites-available/exempl.net

Вы вставляете код ниже, конечно же, меняете путь к вашей doku wiki и меняете server_name:

server {
      listen 80;
      root /var/www/exempl.net;
      server_name exempl.net;
      index index.php index.html doku.php;
      location ~ ^/(data|conf|bin|inc) {
              return 404;
      }
      location ~ ^/lib.*\.(gif|png|ico|jpg)$ {
              expires 31d;
      }
      location / {
              try_files $uri $uri/ @dokuwiki;
      }
      location @dokuwiki {
              rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
              rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
              rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
              rewrite ^/tag/(.*) /doku.php?id=tag:$1&do=showtag&tag=tag:$1 last;
              rewrite ^/(.*) /doku.php?id=$1&$args last;
      }
 
	 # здесь вы вставляете свое местоположение ~ \.php$
	 # вот мой комментарий
     # местоположение ~ \.php$ {
     # включить /etc/nginx/fastcgi_params;
     # fastcgi_param ИМЯ_ФАЙЛА_СКРИПТА $document_root$fastcgi_script_name;
     # fastcgi_pass unix:/var/run/php5-fpm.sock;
     # }
 }

и включите его и перезапустите ngnix:

ln -s /etc/nginx/sites-available/exempl.net /etc/nginx/sites-enabled/
 
service nginx restart

Переписать

См. документацию nginx. В следующем примере корневой каталог нашего сервера — /var/www, и мы извлекаем dokuwiki в /var/www/wiki.

server {
    listen 80;
    server_name example.com www.example.com;
 
    #максимальный размер загружаемого файла составляет 4 МБ — при необходимости измените его соответствующим образом
    client_max_body_size 4M;
    client_body_buffer_size 128k;
 
    root /var/www/wiki;
    index doku.php;
 
    location / { try_files $uri $uri/ @dokuwiki; }
 
    location @dokuwiki {
        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
        rewrite ^/(.*) /doku.php?id=$1&$args last;
    }
 
    location ~ \.php$ {
        if (!-f $request_filename) { return 404; }
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param REDIRECT_STATUS 200;
        fastcgi_pass 127.0.0.1:9000;
    }
}

Примечания

Если используется https, переменная HTTPS-сервера должна быть установлена, чтобы разрешить правильное связывание в dokuwiki. Это можно сделать в разделе сервера с помощью:

fastcgi_param HTTPS on;

Ключевое last слово правил перезаписи перед настройкой местоположения гарантирует, что переписывание происходит только один раз. Вам следует заменить все /dokuwiki/, указанные выше, на ваш каталог вики относительно корневого каталога веб-сервера.

Если вы копируете и вставляете эти конфигурации, обязательно добавьте местоположения для защиты некоторых каталогов, как описано на странице «Безопасность».