code

Configuración de HTTPS para Nginx

Last updated: 21.02.2026
Views: 56

HTTPS significa Hypertext Transfer Protocol Secure y es la versión segura de HTTP, el protocolo utilizado para la comunicación entre su navegador web y un sitio web. HTTPS encripta los datos que se envían y reciben, lo que garantiza que la comunicación sea segura y privada.

Hace algún tiempo utilicé VPS para algunos de mis proyectos. Necesitaba ejecutar PHP y NodeJS en el servidor y configurar dominios para estos proyectos. Se eligió Nginx como servidor proxy, en el que se configuraron los dominios. El sistema operativo del servidor era Ubuntu. Para que los dominios funcionaran, se tuvo que configurar HTTPS. Para generar certificados SSL, se eligió el centro de certificación gratuito Let’s Encrypt.

Obtenga un certificado

sudo letsencrypt certonly -a webroot --webroot-path=/var/www/site.com/public_html -d site.com -d www.site.com

Renovar el certificado

sudo letsencrypt renew

Configuración completa de nginx

server {
 
    listen 80 ;
    server_name  site.com.ru www.site.com;
    return 301 https://$server_name$request_uri;
 }
 
server {
 
  # SSL configuration
 
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name  site.com www.site.com;
 
  ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/site.com/chain.pem;
 
  add_header Content-Security-Policy "img-src https: data:; upgrade-insecure-requests";
 
  # We keep access log:
  access_log  /var/log/nginx/site.com_access.log;
 
  # We share static and dynamic, static stored in cache for 10 days:
      location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|doc|docx|pdf|xls|xlsx|rar|zip|tbz|7z|exe)$ {
      root /var/www/site.com/public_html;
      expires 10d;
  }
  # htaccess and htpasswd do not give:
      location ~ /\.ht {
          deny  all;
  }
 
  # We want to see statistics when accessing the /stat folder
  location = /stat {
      stub_status on;
      access_log  off;
  }
 
  location / {
      proxy_pass         http://site.com:8888/;
      proxy_redirect     off;
      log_not_found      off;
      proxy_set_header   X-Real-IP $remote_addr;
      proxy_set_header   Host $http_host;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header   HTTPS on;
  }
}

No olvides reiniciar nginx

sudo /etc/init.d/nginx restart
author
Autor: Igor Rybalko
He estado trabajando como desarrollador front-end desde 2014. Mi principal pila tecnológica es Vue.js y WordPress.

Publicaciones similares:

Leave a Reply

Your email address will not be published. Required fields are marked *