El concepto de bloque en NGINX es similar al de VirtualHost en Apache. Sin embargo, vamos a crear un fichero de configuración diferente para cada URL distinta que va a servir el Webserver por la misma IP y puerto.
Configuración del fichero hosts
Lo primero de todo es configurar cada URL en el fichero /etc/hosts. Ejemplo:
[root@prt53ws1 ~]# cat /etc/hosts |grep 127
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 silladeruedas24.com
127.0.0.1 hervidores.online
127.0.0.1 keepcalm365.com
127.0.0.1 parqueinfantil.org
127.0.0.1 puerto53.com
[root@prt53ws1 ~]#
Como vemos todas las URLs están asignadas a la IP local del servidor, algo que nos vendrá muy bien en el futuro si creamos grupos de escalado en Amazon AWS.
Configuración de NGINX
En el fichero de configuración /etc/nginx/nginx.conf, añadiremos las siguientes líneas al final del fichero, justo antes de cerrar la llave de la directiva http:
include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
Esto sirve para indicar que en el directorio sites-enabled vamos a crear un fichero de configuración diferente para cada una de las URLs y nginx los va a leer cuando arranque.
Configuración de cada bloque
Mejor adjunto el código fuente del fichero puerto53.conf, que es el utilizado para este blog, porque el resto son todos iguales:
[root@prt53ws1 ~]# cat /etc/nginx/sites-enabled/puerto53.conf
# puerto53.com
server {
#listen puerto53.com:80 default_server;
listen 80;
server_name puerto53.com;
#root /usr/share/nginx/html;
root /app/puerto53/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /app/puerto53/html/;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
# Caching 30 days in browser - Expire headers
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~* \.php$ {
fastcgi_index index.php;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_connect_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_send_timeout 300s;
}
}
# puerto53.com
# TLS puerto53.com
server {
ssl on;
#listen puerto53.com:443 ssl http2 default_server;
listen 443;
server_name puerto53.com;
root /app/puerto53/html;
#ssl_certificate "/app/puerto53/scripts/SSL/puerto53/puerto53.com.crt";
ssl_certificate "/app/puerto53/scripts/SSL/puerto53/puerto53.com.chain.crt";
ssl_certificate_key "/app/puerto53/scripts/SSL/puerto53/puerto53.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /app/puerto53/html/;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
# Caching 30 days in browser - Expire headers
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~* \.php$ {
fastcgi_index index.php;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_connect_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_send_timeout 300s;
}
}
# puerto53.com FIN
[root@prt53ws1 ~]#
Especial mención a las siguientes directivas:
- El servidor WEB escucha por el puerto 443 sin especifica la IP:
- listen 443;
- La URL puerto53.com utiliza este fichero de configuración:
- server_name puerto53.com;
- El código HTML está en el directorio:
- root /app/puerto53/html;
Te puede interesar
Guía de servidores virtuales privados (VPS)
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,