AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 709271
Accepted
bomben
bomben
Asked: 2022-07-11 00:21:03 +0800 CST2022-07-11 00:21:03 +0800 CST 2022-07-11 00:21:03 +0800 CST

Qual é a maneira correta de configurar o Certbot para um servidor nginx com várias portas/serviços em um único domínio?

  • 772

Originalmente, eu tinha o NGINX configurado para dois serviços (Radicale e LMS) em duas portas diferentes. Eu fiz isso em /etc/nginx/nginx.conf. Os acessos de MYDOMAIN:8000e :8009para 3001a internet são redirecionados para Radicalee LMSrespectivamente.

Configurei certificados no servidor para habilitar isso e, em seguida, corri sudo certbot --nginx -d MYDOMAINpara gerar certificados letsencrypt. Depois desativei meus próprios certificados (eu só tive que configurá-los para tornar o arquivo de configuração livre de erros).

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
}

http {
    sendfile on;

    tcp_nopush on;
    types_hash_max_size 2048;
    keepalive_timeout 65;

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

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    # reduce logging
    access_log off;

#   access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;

#   include /etc/nginx/conf.d/*.conf;
#   include /etc/nginx/sites-enabled/*;

    auth_basic "NGINX";
    auth_basic_user_file /etc/nginx/.htpasswd;

#   old, before Certbot
#   ssl_certificate ssl/server.crt;
#   ssl_certificate_key ssl/server.key;
    
    server {
      server_name MYDOMAIN;
      listen 8000 ssl;
      location / {
        proxy_pass http://localhost:8000;
        proxy_set_header X-Script-Name /;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Remote-User $remote_user;
        proxy_set_header Host $http_host;
        proxy_pass_header Authorization;
        auth_basic "Nginx-Radicale - Password required";
      }
    
    # generated with: sudo certbot --nginx -d MYDOMAIN
    ssl_certificate /etc/letsencrypt/live/MYDOMAIN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/MYDOMAIN/privkey.pem; # managed by Certbot
}
    server {
      server_name MYDOMAIN;
      listen 8009;
      return 301 https://MYDOMAIN:3001;
    }
    server {
      server_name MYDOMAIN;
      listen 3001;
      location / {
        proxy_pass http://localhost:3000/;
        auth_basic "NGINX";
      }
    }
}

Agora mudei minha configuração e queria dividir a serverparte da configuração em nginx/conf.dsubdiretório para ter uma configuração limpa. Eu queria deixar o original nginx.confcomo vem e apenas ajustar meus próprios dois arquivos:

pi@RPi64:/etc/nginx $ cat conf.d/radicale.conf 
server {
  server_name MYDOMAIN;
  listen 8000; 
# ssl;
  location / {
    proxy_pass http://localhost:5232;
    proxy_set_header X-Script-Name /;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Remote-User $remote_user;
    proxy_set_header Host $http_host;
    proxy_pass_header Authorization;
    auth_basic "Nginx-Radicale - Password required";
  }
}

e segundo arquivo:

pi@RPi64:/etc/nginx $ cat conf.d/LMS.conf
server {
    server_name MYDOMAIN;
    listen 8009;
    return 301 https://MYDOMAIN:3001;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/MYDMOAIN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/MYDOMAIN/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

}

server {
    server_name MYDOMAIN;
    listen 3001;
    location / {
        proxy_pass http://localhost:3000/;
        auth_basic "NGINX";
    }
}

Como você pode ver eu comentei a sslparte no primeiro arquivo. Se deixei entrar sudo nginx -testava dando o erro de falta de certificados. Eu queria evitar ter que configurar meus próprios certificados.

Além disso, você pode ver que a execução certbotadicionou cinco linhas ao meu segundo arquivo:

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/MYDMOAIN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/MYDOMAIN/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

Acho que o certbot encontrou o httpsneste arquivo e decidiu adicionar os certs lá.

No entanto, eu queria adicionar certificados para todo o servidor - ou seja, ambos os sites/arquivos.

Especialmente porque o processo de renovação dos certificados deve ser feito regularmente, eu queria ter certeza de que não há cópia manual envolvida.

Como posso dizer Certbotpara inserir certificados para ambos os arquivos? Preciso adicionar meus próprios certificados primeiro para que o certbot reconheça o requisito?

Ou faria sentido adicionar os certificados ao nginx.confarquivo principal? Estou fazendo algo errado?

nginx certbot
  • 1 1 respostas
  • 26 Views

1 respostas

  • Voted
  1. Best Answer
    bomben
    2022-07-11T00:56:01+08:002022-07-11T00:56:01+08:00

    Minha solução foi adicionar o seguinte a nginx.conf:

    server {
        server_name MYDOMAIN
        listen 443; 
    }
    

    EDIT: É claro que também é possível adicionar este servidor como um .confarquivo conf.d. Isso facilita o manuseio.


    Então eu corri certbot --nginx -d MYDOMAINo que colocou as seguintes linhas:

        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/MYDOMAIN/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/MYDOMAIN/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
    
    }
    
    
        server {
        if ($host = MYDOMAIN) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    
            server_name MYDOMAIN
            listen 443;
        listen 80;
        return 404; # managed by Certbot
    

    Eu então apaguei essas linhas e coloquei essa parte em cada arquivo no meuconf.d/

        ssl_certificate /etc/letsencrypt/live/MYDOMAIN/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/MYDOMAIN/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
    

    Acho que o processo de renovação considerará apenas os certificados em si /etc/letsencrypte, portanto, a correção manual no conf.ddeve estar bem.

    • 1

relate perguntas

  • nginx falha na instalação no Debian estável

  • Nginx gzip_types - uma diretiva redundante em alguns casos?

  • Configuração php-fpm independente da versão Nginx

  • Localização do Nginx ~ /\.ht

  • Hospedando vários aplicativos no Nginx Ubuntu 14.04

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve