Vhosts en Nginx

Ubuntu

Como usuario

mkdir ~/public_html

sudo vim /etc/nginx/sites-available/workspace.local
server {
    listen 80;
    server_name lxmaq2.workspace.local;
    access_log /var/log/nginx/workspace-access.log;
    error_log /var/log/nginx/workspace-error.log;
    root /home/snicoper/public_html;

    location / {
        index index.html index.htm index.php;
    }

    location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
        access_log        off;
        log_not_found     off;
        expires           360d;
    }

    # Si quiero que se vean los archivos y directorios cambiar a on
    autoindex on;

    location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
    }
}

Copiar el sitio creado a sites-enabled

sudo ln -s /etc/nginx/sites-available/workspace.local /etc/nginx/sites-enabled/workspace.local

Si instalo phpmyadmin

En Ubuntu además, hago un enlace simbólico de phpmyadmin en el directorio home, para acceder luego a phpmyadmin http://www.workspace.local/phpmyadmin y me ahorro tener que crear un nuevo vhost para phpmyadmin.

sudo ln -s ln -s /usr/share/phpmyadmin/ public_html/

Reiniciar los servicios.

sudo service nginx restart
sudo service php5-fpm restart

Fedora

Todo como root

Nota

Si se crea un host virtual en el home del usuario, es necesario dar permisos 711 al directorio del usuario.

mkdir /home/snicoper/public_html
chmod 711 /home/snicoper
chmod 755 /home/snicoper/public_html
chown snicoper:snicoper /home/snicoper/public_html

vim /etc/nginx/conf.d/workspace.local.conf
server {
    listen 80;
    server_name www.workspace.local;
    access_log /var/log/nginx/workspace-access.log;
    error_log /var/log/nginx/workspace-error.log;
    root /home/snicoper/public_html;

    location / {
        index index.html index.htm index.php;
    }

    location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
        access_log        off;
        log_not_found     off;
        expires           360d;
    }

    # Si quiero que se vean los archivos y directorios cambiar a on
    autoindex on;

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/snicoper/public_html$fastcgi_script_name;
    }
}
systemctl restart nginx.service
systemctl restart php-fpm.service

Ver Reglas SELinux