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 バージョン (バイナリ パッケージ インストール) カスタム インストール パス ステップ レコード

推薦する

Dockerコンテナのk8sデプロイメントの実装

環境: (docker、k8s クラスター)、前回 docker で起動した Java プログラムの...

フロントエンドJavaScriptのクラス

目次1. クラス1.1 コンストラクタ() 1.2 ゲッターとセッター1.3 これ1.4 静的プロパ...

Vue がコンポーネント通信を実装する 8 つの例

目次1. Props 親コンポーネント ---> 子コンポーネント通信2. $emit 子コン...

vite を使用して vue3 アプリケーションを構築する方法

1. インストールヒント: 現在、VUE3.0 の公式翻訳ドキュメントはありません。しかし、すでに誰...

JavaScript の new 演算子の原理と例の詳細な説明

新しい用途new の機能は、コンストラクターを通じてインスタンス オブジェクトを作成することです。イ...

モバイルフロントエンド適応ソリューション(概要)

ネットで検索してみたところ、多くの面接でモバイル適応方法について質問されることが分かりました。最近い...

JS で美しい条件式を書く方法についての簡単な説明

目次複数の条件文複数属性オブジェクトスイッチステートメントを置き換えるデフォルトパラメータとデストラ...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

Linux usermod コマンドの使用

1. コマンドの紹介usermod (ユーザー変更) コマンドは、ユーザー アカウントを変更するため...

Docker で Tomcat、MySQL、Redis をインストールするための詳細な手順

目次DockerでTomcatをインストールするtomcatイメージを使用してコンテナを作成する(イ...

Vue でフルスクリーンを実装し、フルスクリーン終了を監視する

目次序文:実装手順:完全なソースコード:詳細情報:序文: vueでは、デフォルトページを実装し、di...

npmとcnpmを混在させる際の落とし穴の詳細な説明

目次原因理由NPM の紹介: CNPM の紹介:より良い方法方法の改善npm と cnpm を一緒に...

W3C チュートリアル (5): W3C XML アクティビティ

XML は、データを記述、保存、送信、交換するために設計されています。 XML 1.0 は XML ...

Dockerコンテナデータボリュームの原理と使用法の分析

コンテナデータボリュームとはデータがコンテナ内にある場合、コンテナを削除するとデータは失われます。例...

MySql 8.0.11-Winxp64 (無料インストール版) ​​設定チュートリアル

1. インストールディレクトリにzipパッケージを解凍します。まず、mysql-8.0.11-win...