docker instale o nginx e configure o ssl

Recentemente, eu queria instalar o docker no servidor que vem comendo cinzas há mais de um ano, mas não consegui encontrar uma fonte de yum adequada. Mais tarde, depois de algum Baidu, descobri que o centos8 ia ser frio, então muitos sites espelho removeram a fonte do CentOS 8.

De jeito nenhum, depois de uma breve reflexão, decidi reinstalar o sistema operacional e substituí-lo por centos7.9.Felizmente, não há nada importante no servidor, basta mover um ninho para o blog.

Após a reinstalação do sistema, o processo de instalação do docker ocorreu sem problemas.

Comece a instalar o nginx.

1. Puxe a imagem nginx mais recente diretamente

docker pull nginx

2. Crie alguns novos diretórios e monte as pastas relevantes no container nginx para o host, principalmente para facilitar a reescrita da configuração, seguida de deletar o container, esses arquivos não serão perdidos

mkdir -p /usr/local/nginx/{conf,html,logs,ssl}

3. Inicie um contêiner nginx para cp alguns arquivos e coloque-os na pasta recém-criada na etapa 2

docker run --name nginx -p 80:80 -d nginx

4. Copie o arquivo de configuração no contêiner para o host

Você pode simplesmente ver os detalhes das pastas no contêiner. A propósito, se você usar o yum para instalar a versão nginx-1.20.x diretamente, o diretório nginx será colocado em /usr/local/nginx, mas a instalação do docker ainda é o mesmo que o antigo. O mesmo diretório da versão nginx.

Bceg7Z

docker cp a25b9f301349:/etc/nginx/nginx.conf /usr/local/nginx/conf/
docker cp a25b9f301349:/etc/nginx/conf.d /usr/local/nginx/ 
复制代码

5. Pare o contêiner nginx atual e exclua-o

docker stop a25b9f301349
docker rm a25b9f301349
复制代码

6. Gere o certificado e coloque-o no diretório ssl do host

rMvrrH

Para saber como gerar o certificado, você pode dar uma olhada em acmesh-official/acme.sh .

7. Modifique o arquivo de configuração

KqMkojGenericName

Você pode ver que existem dois arquivos de configuração, e agora você só precisa modificar o arquivo default.conf. O motivo pode ser visto abaixo:

vim conf/nginx.conf

U0GaIv

Ou seja, se ele se chama default.conf ou não, desde que esteja no diretório conf.d, ele será carregado

vim conf.d/default.conf

server {
    listen       80;
    listen  [::]:80;
    server_name  www.telami.cn;

    rewrite ^(.*) https://$server_name$1 permanent;

}

server {
    listen       443 ssl;
    server_name  www.telami.cn;

    ssl_certificate      /etc/nginx/ssl/telami.cn.pem;
    ssl_certificate_key  /etc/nginx/ssl/telami.cn.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        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;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
复制代码

8. Inicie um novo contêiner nginx

docker run \
--name nginx \
-p 443:443 -p 80:80 \
-v /usr/local/nginx/logs:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/ssl:/etc/nginx/ssl/  \
--privileged=true -d --restart=always nginx
复制代码

Explique brevemente:

  • -v: O diretório em que o host está montado, o diretório na frente dos dois pontos ":" é o diretório do host e o diretório a seguir é o diretório no contêiner;
  • -d: roda em segundo plano;
  • --restart=always: reinicia automaticamente o contêiner ao reiniciar o docker;

Falando nisso, há um ponto a ser observado, ou seja, no arquivo defaul.conf acima, o caminho absoluto que aparece é o caminho no container, não na máquina host. Por exemplo, ao configurar o ssl:

ssl_certificate      /etc/nginx/ssl/telami.cn.pem;
ssl_certificate_key  /etc/nginx/ssl/telami.cn.key;
复制代码

É só que ao rodar, -v /usr/local/nginx/ssl:/etc/nginx/ssl/ monta o diretório para que o container possa ler o certificado.

ssl_certificate /usr/local/nginx/ssl/telami.cn.pem;

O nginx não pode ser iniciado e relatará um erro informando que o arquivo não pode ser encontrado.

Ok, por hoje é só, até a próxima~

Acho que você gosta

Origin juejin.im/post/7080351596973916196
Recomendado
Clasificación