wtorek, 26 marca 2013

Nginx + php + userdir

W Nginx nie zaimplementowano mechanizmu userdir, znanego z serwera Apache, który w prosty sposób umożliwia uruchamianie skryptów php w katalogach użytkowników. Uczyniono tak ze względów bezpieczeństwa. Niemniej jednak czasami przydaje się taka funkcjonalność, np. do celów testowych, a więc nauki programowania w php. Poniżej konfiguracja działająca na Debianie/Ubuntu i Archu/Bridge'u:

server {
  listen   80;
  access_log  /var/log/nginx/localhost.access.log;
  index index.php index.html index.htm;

  server_name localhost;
  autoindex on;

  location ~ ^/~([^/]+)/(.+\.php)$ {
    include fastcgi_params;
    alias /home/$1/public_html/$2;
    fastcgi_pass unix:/var/run/php5-fpm.sock; # dla Debiana, Ubuntu
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # dla Bridge'a
    fastcgi_index index.php;
  }

  location ~ ^/~(.+?)(/.*)?$ {
    alias /home/$1/public_html$2;
  }

  location ~ /\.ht { deny all; }
  location ~ /\. { deny all; }
}

W Debianie/Ubuntu powyższa konfiguracja powinna zostać zapisana w jakimś pliku (np. userdir) w katalogu /etc/nginx/sites-available, a następnie dowiązana w katalogu /etc/nginx/sites-enabled. W Archu/Bridge'u dopisujemy to w pliku /etc/nginx/nginx.conf.
Uwaga: powyższa konfiguracja nie jest bezpieczna, nadaje się wyłącznie do celów testowych. Jeśli chcesz więcej wiedzieć, zajrzyj na stronę wiki projektu Nginx.