fazendas nginx e dokuwiki

0

Estou tentando criar um conjunto de dokuwiki e, assim, aproveitar as fazendas.

No entanto, estou com dificuldades porque as instruções são para o apache. Eu posso ter um único dokuwiki rodando muito bem, mas não consigo produzir um conceito de farm de trabalho via reescrita

O material de referência que tenho usado é:

link

link

link

o redirect_farm é aquele em que venho me concentrando, especialmente step2 Configure a vinculação de URL

Here we describe the simples URL rewrite method, using .htaccess under Apache.

Copy the following to /var/www/barn/.htaccess:

.htaccess
RewriteEngine On
RewriteRule ^/?([^/]+)/(.*)  /farmer/$2?animal=$1 [QSA]
RewriteRule ^/?([^/]+)$      /farmer/?animal=$1 [QSA]
Options +FollowSymLinks

Test: Point your browser to http://localhost/barn/foo. You should see the index of farmer. Point to http://localhost/barn/foo/bar. You should get a 404 error “The requested URL /farmer/bar was not found”. This shows that the URL binding works.

If the test fails:

.htaccess must be enabled in the in the Apache Configuration (AllowOverride All); mod_rewrite must be Included. If you have a redirection loop, your DocumentRoot needs to be /var/www/ (neither /var/www/farmer/ nor /var/www/barn/).

Eu tenho um sparce localhost.conf para recriar isso e incluí a reescrita equivalente:

server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/localhost_access_log main;
    error_log /var/log/nginx/localhost_error_log info;
    rewrite_log on;
    root /var/www/localhost/htdocs;
    #location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; }

    location / {
        autoindex on;
        }

    location /barn/ {
        #try_files $uri $uri/ /wiki/doku.php @wiki; 
        autoindex on;
        #alias /var/www/localhost/htdocs/farmer;
        rewrite ^/?([^/]+)/(.*) /farmer/$2?animal=$1 ;
        rewrite ^/?([^/]+)$ /farmer/?animal=$1 ;
    }


    #location ~ \.php$ {
    #   try_files $uri =404;
    #   include /etc/nginx/fastcgi.conf;
    #   fastcgi_pass 127.0.0.1:9000;  
    #}

}

quando eu acessar o link eu vejo " agricultor " e " celeiro ". Quando eu navegador " agricultor " ele lista como " agricultor ". Quando eu entro em "celeiro", ele lista como "agricultor", então aspectos da reescrita estão funcionando.

No entanto ... link retorna 404 e isso deve listar agricultor . Olhando para os logs de depuração:

2018/07/07 15:25:41 [notice] 17845#17845: *1 "^/?([^/]+)/(.*)" matches "/barn/", client: 127.0.0.1, server: localhost, request: "GET /barn/ HTTP/1.1", host: "localhost", referrer: "http://localhost/"

2018/07/07 15:25:41 [notice] 17845#17845: *1 rewritten data: "/farmer/", args: "animal=barn", client: 127.0.0.1, server: localhost, request: "GET /barn/ HTTP/1.1", host: "localhost", referrer: "http://localhost/"

regex detectou, mas a reescrita errada ... o animal = celeiro não deveria ser assim.

da mesma forma:

2018/07/07 15:25:44 [notice] 17845#17845: *1 rewritten data: "/farmer/foo/", args: "animal=barn", client: 127.0.0.1, server: localhost, request: "GET /barn/foo/ HTTP/1.1", host: "localhost"

2018/07/07 15:25:44 [notice] 17845#17845: *1 "^/?([^/]+)$" does not match "/farmer/foo/", client: 127.0.0.1, server: localhost, request: "GET /barn/foo/ HTTP/1.1", host: "localhost"

2018/07/07 15:25:44 [error] 17845#17845: *1 "/var/www/localhost/htdocs/farmer/foo/index.html" is not found (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /barn/foo/ HTTP/1.1", host: "localhost"

Eu sinto que estou perto, mas igualmente eu cheguei ao ponto de não entender a reescrita do nginx ou o que é necessário para o dokuwiki. algum adive?

    
por Naib 07.07.2018 / 16:34

1 resposta

0

Bem, eu meio que respondi ...

/ var / www / localhost / htdocs / agricultor é a base dokuwiki

/ var / www / localhost / htdocs / barn é um diretório que mantém minha fazenda

/ var / www / localhost / htdocs / barn / cow é o primeiro animal

/ var / www / localhost / htdocs / barn / duck é o segundo animal

O farmer / inc / preload.php é configurado de acordo com as dicas:

if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/var/www/localhost/htdocs/barn');

cow / conf / local.protected.php é igualmente configurado

$conf['basedir'] = '/barn/cow/';

duck / conf / local.protected.php é igualmente configurado

$conf['basedir'] = '/barn/duck/';

agora o nginx localhost.conf está configurado como:

server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/localhost_access_log main;
    error_log /var/log/nginx/localhost_error_log info;
    rewrite_log on;
    root /var/www/localhost/htdocs;

    location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; } # post-install lockdown

    location / {
        try_files $uri $uri/ doku.php @farmer;
        autoindex on;
        }
    location /cow {
        return 301 http://$host/barn/cow/doku.php;
        }

    location /duck {
        return 301 http://$host/barn/duck/doku.php;
        }


    location ~ /barn {
        index doku.php;
        autoindex on;
        rewrite ^/barn/?([^/]+)/(.*) /farmer/$2?animal=$1;
        rewrite ^/barn/?([^/]+)$ /farmer/?animal=$1;
        }

    location @farmer {
            rewrite ^/farmer/_media/(.*) /lib/exe/fetch.php?media=$1;
            rewrite ^/farmer/_detail/(.*) /lib/exe/detail.php?media=$1;
            rewrite ^/farmer/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2;
            rewrite ^/farmer/(.*) /doku.php?id=$1&$args;
        }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi.conf;
        fastcgi_pass 127.0.0.1:9000;  
    }

}

Eu posso navegar para o link para a base, link (redirecionando para link , internamente reescrito como link ) para 1º animal e o mesmo para o 2º.

Eu não gosto de aspectos da carga nginx, mas funciona (tm)

    
por 08.07.2018 / 01:23