
Nginx es un servidor web de alto rendimiento, algunas webs como cuevana.tv utilizan nginx.
Instalación
Lo primero que vamos a instalar es php5.
- Código: Seleccionar todo
# apt-get install php5 php5-cli php5-cgi spawn-fcgi
como pueden ver, nginx utiliza spawn-fcgi para levantar php
y ahora si, instalamos nginx,
- Código: Seleccionar todo
# apt-get install nginx
Configuración
Para la configuración voy a simplificar algunas cosas, por ejemplo, para que el servidor interprete php necesitamos levantar el spawn-fcgi
para ello hacemos
- Código: Seleccionar todo
# nano /etc/init.d/php-spawn
y pegamos dentro:
Spoiler: Mostrar
luego
- Código: Seleccionar todo
# chmod +x /etc/init.d/php-spawn
y con eso queda ejecutable, asi podemos levantar el demonio cuando querramos soporte php.
Virtual Hosts
Probablemente nos interese tener virtual hosts tal como lo hacemos en apache. Por defecto tenemos ya un virtual host creado por defecto en /etc/nginx/sites-enabled/default
podemos copiar esa configuración y hacer la nuestra, yo en mi caso hice
- Código: Seleccionar todo
# cp default masterl1nk
y luego
- Código: Seleccionar todo
# nano masterl1nk
este es mi codigo:
- Código: Seleccionar todo
server {
listen 80;
root /home/nico/www;
server_name masterl1nk.dyndns.org;
location / {
index index.html index.php;
autoindex on;
}
location ~ /\.ht {
deny all;
}
location ~ .php$ {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Con algo tan simple como eso creo mi vhost, vamos a explicar un poco:
- Código: Seleccionar todo
server {
listen 80;
root /home/nico/www;
server_name masterl1nk.dyndns.org;
location / {
index index.html index.php;
autoindex on;
}
esa porción de código define el servidor, la raiz del dominio, el puerto y la URL por donde se accesa.
la segunda partecita define la pagina indice y la opción autoindex me da la posibilidad de listar archivos dentro de un directorio, asi podemos definir distintas reglas para distintos directorios, pro ejemplo:
- Código: Seleccionar todo
location /fotos {
index album.html;
autoindex off;
}
- Código: Seleccionar todo
location ~ /\.ht {
deny all;
}
Esto previene que los usuarios lean/descarguen los archivos que comienzan con .ht como .htaccess y .htpasswd
- Código: Seleccionar todo
location ~ .php$ {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Esto es muy importante, es lo que nos da soporte PHP a este virtualhost. Básicamente se conecta al fastcgi que levantamos anteriormente.
Luego para cada vhost adicional solamente clonamos el que hicimos y cambiamos los datos de servidor y la raiz de la pagina.
Tuneup (opcional)
Ya tenemos nuestro servidor funcionando y no hay mas que hacer, claro a menos que seamos unos herejes.
Para gente como nosotros podemos tunear un poco la configuración por defecto de nginx para tener mejor rendimiento.
Editamos el archivo de configuracion con
- Código: Seleccionar todo
# nano /etc/nginx/nginx.conf
Spoiler: Mostrar
no hay mucho para explicar,
- Código: Seleccionar todo
events {
worker_connections 1024;
}
define la cantidad maxima de conexiones al servidor, podemos bajar la cantidad si tenemos un servidor lento.
- Código: Seleccionar todo
## Limite de tamanios
client_body_buffer_size 8k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 1 1k;
define los limites de tamaño y buffer para las peticiones del cliente.
- Código: Seleccionar todo
tcp_nodelay off;
tcp_nopush on;
esto tal vez es lo mas dificil de explicar, tcp_nodelay maneja el control del algoritmo de nagle. por lo general para aplicaciones de servidor que manejan mucho html/php pero poco trafico grande es conveniten deshabilitar la opcion.
- Código: Seleccionar todo
## Compresion
gzip on;
gzip_static on;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/plain text/css image/x-icon image/bmp;
gzip_vary on;
la compresion permite que las peticiones se procesen mas rapidamente, pero provoca mas uso de CPU. El uso de cpu se puede moderar variando gzip_buffers a numeros mayores o menores. con 8k funciona bien. tambien podemos acotar la compresión solo a algunos tipos.
pueden copiar esa configuracion que es la que estoy usando por defecto. COn estas configuraciones tienen un servidor web con php montado en un debian 6 que solo consume 12 megas de ram







