Конфигурация NGINX для Certbot / Letsencrypt - PullRequest
1 голос
/ 14 апреля 2019

Я не могу запустить certbot на моем экземпляре NGINX / Ubuntu18.04 .Я прошел через пошаговое руководство на

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04

Я решил перенаправить certbot , и он обновил мой файл конфигурации для моего сайта.

Мои файлы конфигурации выглядят так:

server {
        listen 80;
        listen [::]:80;

        root /var/www/punkmap.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name punkmap.com www.punkmap.com;

        location / {
                try_files $uri $uri/ =404;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/punkmap.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/punkmap.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

Добавление, которое certbot вносит в мой файл конфигурации, разрушает мой сайт.Это легко исправить, удалив строки кода, которые certbot добавил в мой файл конфигурации.Тем не менее, я не могу найти информацию в Интернете, которая показывает, как исправить проблему.

Как должна выглядеть конфигурация моего сайта?

Спасибо!

Тайлер

1 Ответ

0 голосов
/ 14 апреля 2019

Проблема в том, что у вас есть две директивы listen в одном блоке сервера. Лучшее решение - вручную отредактировать конфигурацию nginx, разделив ее на два серверных блока. Блок non-ssl (порт 80) должен перенаправить на блок ssl (порт 443). Примерно так должно работать:

server {
  listen 80;
  listen [::]:80;

  server_name punkmap.com www.punkmap.com;
  return 301 https://$host$request_uri;
}

server {

  root /var/www/punkmap.com/html;
  index index.html index.htm index.nginx-debian.html;

  server_name punkmap.com www.punkmap.com;

  location / {
    try_files $uri $uri/ =404;
  }

  listen [::]:443 ssl ipv6only=on;
  listen 443 ssl;
  ssl_certificate /etc/letsencrypt/live/punkmap.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/punkmap.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

И затем в будущем, когда вы обновитесь, обязательно передайте параметр --cert-only, чтобы ваша конфигурация не была снова взломана. Обратите внимание, что я удалил все комментарии # под управлением Certbot , потому что после этого они будут управляться вами.

...