dockerはnginxをインストールし、sslを構成します

最近、1年以上灰を食べているサーバーにdockerをインストールしたかったのですが、適切なyumソースが見つかりませんでした。その後、Baiduを使用した後、centos8が寒くなることがわかりました。多くのミラーサイトがCentOS8ソースを削除しました。

まさか、少し考えた後、オペレーティングシステムを再インストールしてcentos7.9に置き換えることにしました。幸い、サーバーには重要なことは何もありません。ブログのネストを移動するだけです。

システムを再インストールした後、Dockerのインストールプロセスは非常にスムーズに進みました。

nginxのインストールを開始します。

1.最新のnginxイメージを直接プルします

docker pull nginx

2.いくつかの新しいディレクトリを作成し、nginxコンテナ内の関連するフォルダをホストにマウントします。これは主に構成の書き換えを容易にするためであり、その後コンテナを削除します。これらのファイルは失われません。

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

3. nginxコンテナーを起動して、いくつかのファイルをcpし、手順2で新しく作成したフォルダーに配置します。

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

4.コンテナ内の構成ファイルをホストにコピーします

コンテナ内のフォルダの詳細を簡単に確認できます。ちなみに、yumを使用してnginx-1.20.xバージョンを直接インストールする場合、nginxディレクトリは/ usr / local / nginxの下に配置されますが、dockerのインストール古いものと同じです。バージョンnginxと同じディレクトリです。

Bceg7Z

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

5.現在のnginxコンテナを停止して削除します

docker stop a25b9f301349
docker rm a25b9f301349
复制代码

6.証明書を生成し、ホストのsslディレクトリに配置します

rMvrrH

証明書の生成方法については、acmesh-official/acme.shを参照してください。

7.構成ファイルを変更します

KqMkoj

2つの構成ファイルがあることがわかります。これで、default.confファイルを変更するだけで済みます。その理由は以下のとおりです。

vim conf/nginx.conf

U0GaIv

つまり、default.confと呼ばれるかどうかに関係なく、conf.dディレクトリにある限りロードされます。

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.新しい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
复制代码

簡単に説明してください:

  • -v:ホストがマウントされているディレクトリ、コロン「:」の前のディレクトリはホストディレクトリ、次のディレクトリはコンテナ内のディレクトリです。
  • -d:バックグラウンドで実行します。
  • --restart = always:dockerを再起動するときにコンテナを自動的に再起動します。

これについて言えば、注意すべき点が1つあります。つまり、上記のdefaul.confファイルに表示される絶対パスは、ホストマシンではなく、コンテナー内のパスです。たとえば、sslを構成する場合:

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

実行時に、-v / usr / local / nginx / ssl:/ etc / nginx / ssl /がディレクトリをマウントして、コンテナが証明書を読み取れるようにします。この構成に変更された場合:

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

nginxを起動できず、ファイルが見つからないというエラーが報告されます。

さて、今日はこれでおしまいです。またお会いしましょう〜

おすすめ

転載: juejin.im/post/7080351596973916196