Crear Nginx en un servidor Linux, actualiza tus paquetes del sistema operativo, instala Nginx (apt o dnf/yum), permita HTTP/HTTPS en el firewall, inicie y habilite el servicio, cree un bloque de servidor (host virtual) para su dominio, pruebe la configuración y recargue. Nginx.
Opcionalmente, habilite HTTPS con Let's Encrypt de forma gratuita. SSL certificados. Quiero crear Nginx ¿Quieres instalar Linux en un servidor de la forma correcta? Esta guía te explica cómo instalar, configurar y garantizar la seguridad en distribuciones basadas en Ubuntu/Debian y RHEL.
Aprenderás cómo configurar bloques de servidor, PHP-FPM, proxy inverso para aplicaciones, SSL con Vamos a cifrar, ajuste del rendimiento y resolución de problemas: fácil de usar para principiantes pero listo para producción.
Lo que necesita antes de comenzar?
Antes de que instalar Nginx, asegúrese de que se cumplan los siguientes requisitos previos:
- Un servidor Linux (Ubuntu 22.04/24.04, Debian 12, AlmaLinux/Rocky Linux 9 o CentOS Stream).
- Acceso root o sudo.
- Un dominio registrado con DNS Registros A/AAAA que apuntan a la IP de su servidor.
- Los puertos 80 (HTTP) y 443 (HTTPS) están abiertos en su firewall o grupo de seguridad en la nube.
- Conocimientos básicos de la línea de comandos y SSH acceder.
Instale Nginx en Ubuntu/Debian
En sistemas basados en Debian, Nginx Está disponible en los repositorios oficiales y se instala en minutos.
Actualizar el sistema operativo e instalar Nginx
sudo apt update && sudo apt -y upgrade
sudo apt -y install nginxIniciar y habilitar el servicio
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginxPermitir Nginx en el cortafuegos UFW
sudo ufw allow 'Nginx Full'
sudo ufw statusVerificar instalación
Visite http://your-domain.com o la IP de su servidor. Debería ver la configuración predeterminada. Nginx pagina de bienvenida.
Instale Nginx en RHEL/CentOS/AlmaLinux/Rocky
Las distribuciones de la familia RHEL normalmente utilizan dnf (o yum) y firewalld.
Instale Nginx del repositorio
sudo dnf -y install epel-release
sudo dnf -y install nginxIniciar y habilitar Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginxPuertos abiertos en firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-allConsideraciones sobre SELinux
Si se está aplicando SELinux y usted cambia las raíces del documento o los puertos de escucha, configure los contextos y valores booleanos correctos:
# Example: allow Nginx to connect to upstream services
sudo setsebool -P httpd_can_network_connect 1
# Assign correct context to new webroot
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
sudo restorecon -Rv /var/www/example.comCrea tu primero Nginx Bloque de servidor (host virtual)
Los bloques de servidor (hosts virtuales) permiten alojar varios sitios web en un mismo servidor . A continuación, se muestran ejemplos para sistemas basados en Debian/Ubuntu y RHEL.
Ubuntu/Debian: sitios disponibles y sitios habilitados
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com
cat <<'EOF' | sudo tee /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
access_log /var/log/nginx/example_access.log;
error_log /var/log/nginx/example_error.log;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginxRHEL/AlmaLinux/Rocky: conferencia
sudo mkdir -p /var/www/example.com/html
sudo chown -R nginx:nginx /var/www/example.com
sudo chmod -R 755 /var/www/example.com
cat <<'EOF' | sudo tee /etc/nginx/conf.d/example.com.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
access_log /var/log/nginx/example_access.log;
error_log /var/log/nginx/example_error.log;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo nginx -t && sudo systemctl reload nginxCrea una página de prueba sencilla:
echo "<h1>It works!</h1>" | sudo tee /var/www/example.com/html/index.htmlAgregar PHP Apoyo con PHP-FPM
Nginx sirve archivos estáticos y actúa como proxy para solicitudes dinámicas. PHP-FPM.
Instale PHP-FPM
# Ubuntu/Debian
sudo apt -y install php-fpm
# RHEL family
sudo dnf -y install php-fpmNginx Bloque de servidor con PHP
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf; # Debian/Ubuntu path
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # adjust PHP version/socket
}
location ~* .(jpg|jpeg|png|gif|svg|css|js|ico)$ {
expires 30d;
access_log off;
}
}Cree un archivo phpinfo() para probar:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.com/html/info.phpHabilitar HTTPS con Let's Encrypt (Certbot)
Free SSL/TLS protege a sus usuarios y mejora el SEO. Asegúrese de que su DNS apunta al servidor antes de ejecutar Certbot.
Instalar Certbot y obtener certificados
# Ubuntu/Debian
sudo apt -y install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
# RHEL family
sudo dnf -y install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.comCertbot edita automáticamente su Nginx configuración, habilita Redirecciones HTTPS y HTTP a HTTPS, y configura la renovación automática.
Usar Nginx como proxy inverso (Node.js, Python, Ruby)
Nginx Destaca como proxy inverso delante de servidores de aplicaciones como Node.js, Gunicorn (Python) o Puma (Ruby).
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}Al hacer proxy a HTTPS ascendentes, agregue proxy_ssl_server_name on; y garantizar que los certificados ascendentes se validen correctamente.
Fundamentos del ajuste del rendimiento
Los valores predeterminados predeterminados son conservadores. Ajuste con cuidado y haga pruebas.
- Trabajadores y conexiones: establecido en nginx.conf.
- Compresión: Habilitar gzip; considerar Brotli si está disponible.
- Almacenamiento en caché estático: caché larga para activos inmutables.
- HTTP/2 y TLS: cifrados modernos, reutilización de sesiones.
- Keepalive ascendente: Mejorar la eficiencia del proxy inverso.
# /etc/nginx/nginx.conf (excerpt)
worker_processes auto;
events {
worker_connections 1024;
multi_accept on;
}
http {
sendfile on;
keepalive_timeout 65;
server_tokens off;
gzip on;
gzip_types text/plain text/css application/json application/javascript application/xml+rss;
gzip_min_length 1024;
# Example: cache static assets aggressively
map $sent_http_content_type $expires {
default off;
~image/ 30d;
~font/ 30d;
~text/css 7d;
~application/javascript 7d;
}
}Lista de verificación para fortalecer la seguridad
- Ocultar versión:
server_tokens off; - HTTPS en todas partes: redirigir HTTP a HTTPS, utilice HSTS si corresponde.
- Encabezados de seguridad: CSP, Opciones de marco X, Opciones de tipo de contenido X, Política de referencia.
- Limitación de velocidad: Estrangular a los clientes abusivos.
- Limite los métodos y el acceso a rutas sensibles.
- Guardar Nginx y abiertoSSL actualizada.
# Example headers (in server {} or http {})
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Rate limit: 10 requests/second burst 20 per IP
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
server {
...
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
proxy_pass http://127.0.0.1:3000;
}
}Registros, monitoreo y mantenimiento
- Registros:
/var/log/nginx/access.logy/var/log/nginx/error.logpor sitio si está configurado. - Rotar registros: Nginx instala reglas de logrotate por defecto; verifique en
/etc/logrotate.d/nginx. - Monitor: use
nginx -VPara obtener información sobre la construcción,systemctl status nginxpara la salud del servicio y herramientas como Netdata, Prometheus o Uptime Kuma.
# Quick log tail
sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.logRecarga sin tiempo de inactividad y comandos útiles
- Configuración de prueba:
sudo nginx -t - Recargar (sin tiempo de inactividad):
sudo systemctl reload nginxorsudo nginx -s reload - reiniciar:
sudo systemctl restart nginx - Ver sitios habilitados (Debian):
ls /etc/nginx/sites-enabled - Comprobar puertos abiertos:
ss -tulpn | grep :80|:443
Solución de problemas comunes Nginx Errores
- 403 Prohibido: Permisos o propiedad incorrectos. Asegúrese de que el directorio raíz web sea legible por
www-data(Debian/Ubuntu) onginx(RHEL). - 404 No encontrado: Mal
rootcamino o faltatry_files. Confirme que el archivo existe en el directorio web definido. - 502 Bad Gateway: PHP-FPM o la aplicación ascendente están caídos o el socket/puerto es incorrecto. Verificar PHP-Servicio FPM y
fastcgi_passcamino, o aguas arribaproxy_passobjetivo. - 413 Entidad de solicitud demasiado grande: incrementar
client_max_body_sizeen el servidor o bloquear http y recargar. - SSL Errores: garantizar DNS es correcto, los puertos 80/443 están abiertos y la renovación de Certbot funciona con
sudo certbot renew --dry-run.
Cuándo elegir hosting administrado
Si prefieres no hacerlo manage parches, SSL renovaciones, monitoreo y escalabilidad por su cuenta, considere una managed VPS o servidor dedicado. En YouStable, proporcionamos rendimiento optimizado Nginx Plataformas, migración gratuita, refuerzo de seguridad proactivo y soporte experto las 24 horas del día, los 7 días de la semana, para que pueda concentrarse en su aplicación mientras nosotros nos encargamos del tiempo de actividad y la optimización.
FAQ’s
1. Es Nginx mejor que Apache ¿Para sitios con mucho tráfico?
Para archivos estáticos y conexiones concurrentes, NginxSu arquitectura basada en eventos suele ser más eficiente. Apache es versátil y rico en módulos. Muchos stacks de producción utilizan Nginx como un proxy inverso delante de Apache o servidores de aplicaciones para equilibrar las fortalezas.
2. ¿Cómo creo varios sitios (hosts virtuales) en Nginx?
Cree un bloque de servidor independiente para cada dominio. En Ubuntu/Debian, coloque los archivos en /etc/nginx/sites-available y enlace simbólico a sites-enabledEn las distribuciones basadas en RHEL, agregue un .conf archivar bajo /etc/nginx/conf.d. Prueba con nginx -t y recargar.
3. ¿Qué puertos deberían estar abiertos para? Nginx?
Abra TCP 80 para HTTP y 443 para HTTPS. En entornos de nube (AWS, GCP, Azure), permítalos en grupos de seguridad o reglas de firewall. En el servidor, use UFW o firewalld para permitir el tráfico web.
4. ¿Cómo renuevo automáticamente los certificados Let's Encrypt?
Certbot instala un temporizador systemd o una tarea cron para la renovación automática. Verificar con sudo systemctl list-timers | grep certbot o ejecutar un ensayo: sudo certbot renew --dry-runLos certificados se renuevan aproximadamente 30 días antes de su vencimiento.
5. Can Nginx ¿Funcionar como balanceador de carga?
Sí. Define un upstream Bloquear con múltiples servidores backend y hacer referencia a él a través de proxy_passUtilice métodos de equilibrio de carga como round-robin (predeterminado), least_conn, o ip_hashy agregar controles de salud con max_fails y fail_timeout.
Conclusión
Ahora puedes crear Nginx en un servidor Linux de extremo a extremo: instalar, configurar bloques de servidor, proteger con HTTPS, aplicaciones de proxy inverso, optimizar y mantenerlo reforzado. Siga los pasos, pruebe con nginx -ty recarga de forma segura. Para una pila optimizada para el rendimiento y sin preocupaciones, YouStable, managed alojamiento Puede acelerar su implementación.
