{{tag>dokuwiki nginx}} # dokuwiki を reverse proxy の後ろで運用する * reverse proxy が受ける url は `http://reverseproxy/` * バックエンドのサーバーが受ける url は `http://ip.addr.back.end/dokuwiki/` こんな設定でいきます。 ## reverse proxy の設定 ``` server { location / { proxy_pass http://ip.addr.back.end/dokuwiki/; } } ``` dokuwiki に限らず nginx を reverse proxy として使う場合は、`proxy_pass` の url の書き方に注意する必要があります。 ``` proxy_pass http://ip.addr/back.end/dokuwiki/; ``` ……と書くのと、 ``` proxy_pass http://ip.addr/back.end/dokuwiki; ``` ……と、最後のスラッシュを省いて書くのとでは、意味が違うみたいです。[nginx 本家](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass) ## バックエンド のサーバーの設定 dokuwiki 一式は /path/to/htdocs/dokuwiki に展開されています。 ``` server { listen ip.addr.back.end; root /path/to/htdocs; location /dokuwiki/ { index doku.php; try_files $uri $uri/ @dokuwiki; } location @dokuwiki { rewrite ^/dokuwiki/_media(.*) /dokuwiki/lib/exe/fetch.php?media=$1 last; rewrite ^/dokuwiki/_detail/(.*) /dokuwiki/lib/exe/detail.php?media=$1 last; rewrite ^/dokuwiki/_export/([^/]+)/(.*) /dokuwiki/doku.php?do=export_$1&id=$2 last; rewrite ^/dokuwiki/(?!lib/)(.*) /dokuwiki/doku.php?id=$1&$args last; } location ^~ /dokuwiki/(data|conf|bin|inc)/ { deny all; } : : } ``` ……と、バックエンドサーバーの document root を `/path/to/htdocs/dokuwiki` にしたくなかったので、こんな感じの設定になってます。 あとは、/path/to/dokuwiki/lib/local.php で、以下の設定を行います。 ``` $conf['baseurl'] = 'http://reverseproxy/'; $conf['basedir'] = '/'; ``` これで `http://reverseproxy/` にアクセスすると `http://ip.addr.back.end/dokuwiki/start` にアクセスした時と同じ結果を得ることができます。 **ただし** `http://ip.addr.back.end/dokuwiki/` の url からはマトモにアクセスできなくなります……両立はちょっと厳しそうです。