洋食の日記

洋食のことではなく、技術メモを書きます。たまにどうでも良いことも書きます。

NginxでUserDir的なことするのは設定ファイルにlocationを書くだけで良い

Apache2からNginxへの移行を進めていて、UserDir的なことをしようと思ったら、mod_userdirを有効にする感じではなかった。Debian GNU/Linuxであれば、/etc/nginx/sites-available/defaultを編集するだけでよい。PHPも動くようにしたいので、ついでにそれも設定する。

$ sudo vim /etc/nginx/sites-available/default
...省略

  # 最初からコメントで「PHP使うならindex.phpを追加しなさいよ」と書いてある。
  # Add index.php to the list if you are using PHP
  index index.php index.nginx-debian.html index.html index.htm;

...省略

  # for UserDir
  location ~ ^/~([^/]+)/(.+\.php)$ {
    alias /home/$1/public_html/$2;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
  }
  location ~ ^/~(.+?)(/.*)?$ {
    alias /home/$1/public_html$2;
  }

...省略

基本的には、正規表現で拾ったものを、aliasに渡しているだけ。これで再起動して設定を反映すればおk。

$ sudo systemctl restart nginx

とっても簡単。本日も先人に感謝。