Docker に nginx をインストールし、https 経由でアクセスを構成する方法

Docker に nginx をインストールし、https 経由でアクセスを構成する方法

1. 最新のnginx dockerイメージをダウンロードする

$ docker pull nginx:最新

2. nginxコンテナを起動する

nginxコンテナを起動するには、次のコマンドを実行します。

docker run --detach \
    --name wx-nginx \
    -p 443:443\
    -p 80:80 \
    -v /home/evan/workspace/wxserver/nginx/data:/usr/share/nginx/html:rw\
    -v /home/evan/workspace/wxserver/nginx/config/nginx.conf:/etc/nginx/nginx.conf/:rw\
    -v /home/evan/workspace/wxserver/nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw\
    -v /home/evan/workspace/wxserver/nginx/logs:/var/log/nginx/:rw\
    -v /home/evan/workspace/wxserver/nginx/ssl:/ssl/:rw\
    -d nginx
  • httpsリクエスト用にポート443をマップする
  • http リクエスト用にポート 80 をマップします。
  • nginxのデフォルトのホームページHTMLストレージディレクトリは、ホストディスクディレクトリ/home/evan/workspace/wxserver/nginx/dataにマップされます。
  • nginx 設定ファイルは、ホストディスクファイル /home/evan/workspace/wxserver/nginx/config/nginx.conf にマッピングされます。

ここでは、次のファイルを準備する必要があります。

1. nginx 設定ファイル

まずnginx.confファイルです。デフォルトの設定ファイルは次のとおりです。

#nginx を実行しているユーザー user nginx;
#プロセスを開始し、CPU の数と同じになるように設定します。worker_processes 1;

#グローバルエラーログとPIDファイルの場所 error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

#動作モードと接続制限イベント {
    #単一のバックグラウンドワーカーの同時プロセスの最大数は1024に設定されています
  ワーカー接続 1024;
}


http {
    #MIME タイプを設定する include /etc/nginx/mime.types;
  デフォルトタイプ アプリケーション/オクテットストリーム;

    #ログフォーマットを設定する log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';

  access_log /var/log/nginx/access.log メイン;

  ファイル送信オン;
  #tcp_nopush オン;

    #接続タイムアウトイベントを設定します keepalive_timeout 65;

    #GZIP 圧縮をオンにします #gzip on;

  /etc/nginx/conf.d/*.conf を含めます。
}

最後の行には、サーバフィールドを設定するために使用される別の設定ファイルconf.d/default.confも含まれていることがわかります。

サーバー{
  listen 80; #ポート80をリッスンします。すべてのアクセスをHTTPSに強制する場合は、この行をキャンセルする必要があります server_name www.buagengen.com; #ドメイン名#charset koi8-r;
  #access_log /var/log/nginx/host.access.log メイン;

    # ホームページのインデックスディレクトリと名前の場所を定義します / {
    ルート /usr/share/nginx/html;
    インデックス index.html index.htm;
  }

  # エラープロンプトページを定義します #error_page 404 /404.html;

  #エラーページを /50x.html にリダイレクトします
  エラーページ 500 502 503 504 /50x.html;
  場所 = /50x.html {
    ルート /usr/share/nginx/html;
  }
}

2. nginxのデフォルトホームページのHTMLファイル

この HTML は自分で定義できます。どれでも構いません。

このとき、IP アドレスを通じて nginx で定義された HTML ファイルに直接アクセスできます。ただし、現時点では http 経由のアクセスのみであり、https 経由のアクセスはまだできません。nginx サーバーに証明書を追加する必要があります。

3. openssl経由で証明書を生成する

server.key を設定します。パスワードを 2 回設定する必要があります。

openssl genrsa -des3 -out server.key 1024

パラメータ設定では、まず以前に設定したパスワードを入力する必要があります。

openssl req -new -key server.key -out server.csr

次に、以下の情報を入力する必要があります。大まかに記入してください。とにかく、これはテスト用です。

国名 (2 文字コード) [AU]: 州または県名 (フルネーム) [Some-State]: 地域名 (例: 市) []: 組織名 (例: 会社) [Internet Widgits Pty Ltd]: 組織単位名 (例: セクション) []: 
共通名(例:サーバーのFQDNまたはあなたの名前)[]:ウェブサイトのドメイン メールアドレス[]:メールアドレス 次の「追加」属性を入力してください
証明書のリクエストと一緒に送付されます
チャレンジパスワード []: ここにパスワードを入力してください オプションの会社名 []:

RSA キーを書き込みます (以前に設定したパスワードも入力する必要があります)。

openssl rsa -in server.key -out server_nopwd.key

秘密鍵を取得します:

openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt

この手順を完了すると、必要な証明書ファイルと秘密キーが取得されます。

  • サーバー.crt
  • サーバーキー

4. httpsアクセスをサポートするようにnginxサーバーを構成する

前の手順で生成されたファイルを、ホストの ssl ディレクトリ (/home/evan/workspace/wxserver/nginx/ssl) にコピーします。

次に、構成ファイル default.conf を変更し、SSL サポートを追加します。

サーバー{
  listen 80; #ポート 80 を listen します。すべてのアクセスを HTTP に強制する場合は、この行を登録解除する必要があります。 listen 443 ssl;
  server_name www.buagengen.com; #ドメイン名# SSLを追加
  #ssl on; #HTTPs アクセスを強制する場合は、この行で ssl_certificate /ssl/server.crt を開く必要があります。
  ssl_certificate_key /ssl/server.key;

  ssl_session_cache 共有:SSL:1m;
  ssl_session_timeout 5分;

   # openssl ssl_protocols SSLv2 SSLv3 TLSv1.2 でサポートされている形式で暗号を指定します。

   ssl_ciphers HIGH:!aNULL:!MD5; # パスワード暗号化方式 ssl_prefer_server_ciphers on; # SSLv3 および TLSv1 プロトコルに依存するサーバー暗号は、クライアント暗号よりも優先されます # ホームページのインデックスディレクトリと名前の場所を定義します / {
    ルート /usr/share/nginx/html;
    インデックス index.html index.htm;
   }

  #エラーページを /50x.html にリダイレクトします
  エラーページ 500 502 503 504 /50x.html;
  場所 = /50x.html {
    ルート /usr/share/nginx/html;
  }
}

nginx コンテナを再起動します。これで、https 経由で nginx サーバーにアクセスできるようになります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker nginxのインストールと設定方法
  • Docker インストール Nginx チュートリアル 実装図
  • DockerにNginxをインストールする方法
  • Dockerを使用してNginxをインストールし、ポート転送を構成する

<<:  React.Childrenの詳しい使い方

>>:  MySQL 5.5.56 バージョン (バイナリ パッケージ インストール) カスタム インストール パス ステップ レコード

推薦する

Apache POIの基本的な使い方の詳しい説明

目次基本的な紹介入門テスト (Excel ファイルからのデータの読み取り)ステップ1: Maven座...

Linuxにpipパッケージをインストールする方法

1. システムの Python バージョンに応じて、pip インストール パッケージをダウンロードし...

MySQL の binlog_format モードと設定の詳細な分析

MySQL レプリケーションには、SQL ステートメント ベースのレプリケーション (SBR)、行ベ...

insert と select を組み合わせて、「データベース内のフィールドの最大値 + 1 を挿入する」メソッドを実装する

この記事はmysqlデータベースです質問 1 表 1 のデータを表 2 にインポートします。表 1 ...

Nginx でバージョン番号を隠す方法

Nginx はバージョン番号を非表示にする実稼働環境では、セキュリティ上の脆弱性の漏洩を避けるために...

MySQLはデータテーブル内の既存のテーブルを分割します

目次操作方法操作プロセス既存のテーブルにパーティション テーブルを作成し、データを新しいテーブルに移...

Vue テンプレートのコンパイルの詳細

目次1. 解析する1.1 傍受のルール1.2 傍受プロセス部分1.3 パーサーの概要2. 最適化する...

ウェブページの背景色を制御する CSS コード

誰もが自分の Web ページの背景にふさわしい画像を見つけることに悩むことが多いと思います。これは事...

高速でクールな揺れアニメーション効果を実現するCSS

1. Animate.css の紹介Animate.css は、Web プロジェクトですぐに使用で...

シンプルな時計を実装するJavaScript

この記事では、JavaScriptでシンプルな時計を実装するための具体的なコードを参考までに紹介しま...

HTML タグ マーキーはさまざまなスクロール効果を実現します (JS 制御なし)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

Vue3 ベースのフルスクリーン ドラッグ アップロード コンポーネント

この記事は主に、みんなで共有できるVue3ベースのフルスクリーンドラッグアップロードコンポーネントを...

JSのアンカーリンクをクリックするとスムーズにスクロールし、自由にトップ位置に調整できます。

アンカーリンクをクリックするとスムーズにスクロールし、自由にトップ位置に調整できます。 1. アンカ...

1 つの記事で Nginx の現在の制限を理解する (簡単な実装)

Nginx は現在、最も人気のあるロード バランサーの 1 つです。インターネット トラフィックの...

MySQL トランザクション分離レベルの詳細

serializableシリアル化(問題なし)トランザクションは順次実行する必要があります。前のトラ...