nginxはNginx, Inc.によって開発されているWebサーバー。
イベント駆動アプローチを採用しており、静的ファイル配信を得意とする。
多くのリクエストを簡単に捌けることから、リバースプロキシ用途やVPSなどで人気がある。
2条項BSDライセンスで公開されている。
こういった利点に対し、以下のような欠点もある。
PukiWikiのパッケージには、設置した階層以下の全てで.htaccessの利用が許可されている場合のWebアクセス制御サンプルしか収録されていない。
このためnginxで運用するには、nginx.confなどで自らアクセス制御の設定を行い、部外秘のファイルを非公開にする必要がある。
server { listen 80; listen [::]:80; server_name wiki.example.org; root /var/www/wiki.example.org/; index index.php; location / { try_files $uri $uri/ =404; } # deny .htaccess, .htpasswd, .gitignore and .git/ location ^~ /. { deny all; } # deny directories location ~ ^/(attach|backup|cache|counter|diff|lib|plugin|wiki|wiki.en)/ { deny all; } # deny files location ~ \.(htaccess|ini\.php|lng\.php|skin\.php|txt|gz|tgz|zip)$ { deny all; } location ~ \.php$ { # ↓スペースを取り除くこと fastcgi_pass unix:/ run/php/php7.0-fpm.sock; fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
pukiwiki.ini.phpにはadminパスワードが記載されている*1ため、絶対に漏らしてはいけない。
nginxでPukiwikiを動かす場合、pukiwiki.ini.phpがダウンロードできないことを必ず確認してください。
"403 Forbidden"が返ってくるか、真っ白なページが表示される*3場合は問題ありません。
server { listen 80; server_name wiki.example.org; root /var/www/wiki.example.org; location ~ (^/$)|(^/skin/.+\.php$) { # With php5-fpm: fastcgi_pass unix: /var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ ^/(skin|image)/ { } location / { return 404; } }
location ~ (^/$)|(^/index\.php$)|(^/skin/.+\.php$)