Skip to main content

Установка nginx для https, получение сертификата letsencrypt

В разных локальных сетях, имеются разные ограничения.

Данный способ предназначен для настройки https, когда к этому компьютеру есть прямой доступ в Интернет через выделенный IP и nginx расположен на компьютере, где и CSP.

Регистрация домена

Необходимо иметь доступ к настройке любому удгобному Интернет домена. (Наша компания может выдать домен вида XXX.csp.carabisol.ru)

В наNS сервере этройкахго домена необходимо прописать в A запись адрес сервера вс A запись.CSP.

Переключение CSP на 818080 порт

Установка nginx

 (Debian 12)

Настройка nginx

Без шифрования:

http {
  set $csp_address         "csp-supervisor:80";
  set $csp_domain          "mydomain.ru";

  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  sendfile        on;
  #tcp_nopush     on;

  keepalive_timeout  65;

  resolver 127.0.0.11 ipv6=off;
  map $http_upgrade $connection_upgrade {
      default upgrade;
      ''      close;
  }

  server {
    listen 80;
    listen [::]:80;
    server_name $csp_domain;

    error_log /var/logs/nginx/csp-error.log warn;

    location / {
      #Websocket support
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $http_connection;
      proxy_http_version 1.1;

      #Proxy
      client_max_body_size 100m;
      add_header       X-Served-By $host;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Scheme $scheme;
      proxy_set_header X-Forwarded-Proto  $scheme;
      proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP          $remote_addr;
      proxy_pass       http://$csp_address$request_uri;
    }

    location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /var/www/letsencrypt;
    }
  }
}

Для получения сертификата:

server {
  listen 80;
  listen [::]:80;
  server_name mydomain.ru;

  error_log /var/logs/nginx/error.log warn;

  location ^~ /.well-known/acme-challenge/ {
      default_type "text/plain";
      root /var/www/letsencrypt;
  }

}

Когда сертификат получен:

server {
  set $csp_address         "127.0.0.1";

  listen 443 ssl;
  listen [::]:443 ssl;
  server_name mydomain.ru;

  error_log /var/logs/nginx/csp-error.log warn;

  location / {
    #Websocket support
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_http_version 1.1;

    # Let's Encrypt SSL
    include conf.d/include/letsencrypt-acme-challenge.conf;
    include conf.d/include/ssl-ciphers.conf;
    ssl_certificate /etc/letsencrypt/live/xxxx/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/xxxx/privkey.pem;

    #Proxy
    client_max_body_size 512m;
    add_header       X-Served-By $host;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Scheme $scheme;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP          $remote_addr;
    proxy_pass       http://$csp_address:80$request_uri;
  }

  location ^~ /.well-known/acme-challenge/ {
      default_type "text/plain";
      root /var/www/letsencrypt;
  }

}