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

推薦する

MySQL で UTF-8 エンコーディングを使用しないのはなぜですか?

MySQL UTF-8 エンコーディングMySQL は 2003 年のバージョン 4.1 から U...

MySQLでorder byを使用せずにランキングを実装する3つの方法のまとめ

ビジネスを想定: 2位の従業員の給与情報を見るデータベースを作成する emps が存在する場合はデー...

Nginx プロキシ使用時にヘッダーに「_」が含まれることで情報が失われる問題の解決方法

序文ゲートウェイプロジェクトを開発する場合、署名 sign_key 情報はリクエスト時にリクエスト ...

Windows Apache 環境で SSL 証明書を展開して、Web サイトを https 対応にする方法

SSL 証明書の使用についてはここでは説明しません。SSL 証明書を導入する必要がある友人は、すでに...

Linux で実行中のすべてのプロセスを表示する方法

ps コマンドを使用できます。プロセスの PID など、現在実行中のプロセスに関する関連情報を表示で...

MySQL と Golan 間の従来の分散トランザクションのための 7 つのソリューション

目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...

MySQL の暗黙的な型変換によって発生するインデックス障害の解決策

目次質問再生暗黙的な変換要約する参照する質問仕事中、1 つの SQL クエリ ステートメントのみを実...

モバイル適応型ウェブページ効果は、小さな表示ページの問題を解決します

仕事上、携帯電話に適応した Web ページ効果を作成する必要があります。ようやく完成しました。まずは...

Vue で Axios カプセル化を使用するための完全なチュートリアル

序文現在、プロジェクトでは、Axios ライブラリが HTTP インターフェース リクエストによく使...

UrlRewriter のキャッシュ問題と関連する一連の調査

ウェブサイト機能を開発する場合、セッション キャッシュを時間内にクリアできません。一連の探索が始まり...

JavaScript で簡単な計算機を実装する

この記事の例では、参考までに簡単な計算機を実装するためのJavaScriptの具体的なコードを共有し...

Linuxコマンド履歴の調整方法の詳細な説明

Linux システムの bash history コマンドは、以前に実行したコマンドを記憶し、再入力...

VMware Workstation 14 Pro のインストールとアクティベーションのグラフィック チュートリアル

この記事では、VMware Workstation 14 Proのインストールとアクティベーションに...

Ubuntu20のtzselect設定時間失敗問題、Raspberry Piサーバ(推奨)

2 日前、Raspberry Pi サーバーを Ubuntu 20 にアップグレードしました。今日...

Vue+echart で 2 列チャートを実現

この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...