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

推薦する

Linuxのシグナルメカニズムについての簡単な説明

目次1. シグナルリスト1.1. リアルタイム信号と非リアルタイム信号1.2 信号ステータス1.3 ...

Mac で MySQL バージョン 5.6 のパスワードを設定する方法

MySQLはインストール時に設定できますが、それより低いバージョンは設定できないようで、インストール...

div の高さをブラウザの高さに合わせて調整する方法

この古くからある疑問は、数え切れないほどのフロントエンド開発者やバックエンドプログラマーを悩ませてき...

display または visibility を通じて HTML 要素を表示または非表示にする

場合によっては、特定の条件に基づいて Web ページ内の HTML 要素を表示するか非表示にするかを...

Centos8 で Apache httpd2.4.37 を使用して Web サーバーをインストールする詳細な手順

ステップ 1: yum install httpd -y #httpd サービスをインストールします...

自動同期テーブル構造のMySql開発

開発の問題点開発プロセスでは、データベース フィールドが頻繁に変更されるため、RD 環境と QA 環...

Vue Element フロントエンドアプリケーション開発: Vuex での API ストアビューの使用

目次概要1. フロントエンドとバックエンドの分離とWeb APIの優先ルート設計2. Axiosネッ...

MySQLデータベースとOracleデータベース間のバックアップをインポートする

OracleデータベースからエクスポートされたデータをMySqlデータベースにインポートします。 1...

startup.bat をダブルクリックすると Tomcat がクラッシュする問題の解決方法の詳細な説明

Tomcat を学習したばかりのプログラマーにとって、これはよくある間違いです。 1. 環境変数の問...

Linux (Centos7) に mysql8.0.18 をインストールするチュートリアル図

1 インストールリソースパッケージmysql-8.0.18-1.el7.x86_64.rpm-bun...

要素ツリーコントロールは、ドロップダウンメニューとアイコンを統合します(ツリー+ドロップダウン+入力)

目次要件:実装手順:この記事では主に以下について説明します: カスタムツリーコントロール<el...

Macでのファイル権限の表示と設定の詳細な説明

序文Mac システムのターミナルでファイルの権限を変更するには、Linux の chmod コマンド...

MySQLデータの同時更新を処理する方法

UPDATE はロックしますか?以下のような場合、SQL文はロックされますか? テーブル1を更新しま...

HTML コード内のスペースと空白行についての簡単な説明

HTML コード内の連続するスペースまたは空白行 (改行) はすべて 1 つのスペースとして表示され...

Zabbixリモートコマンド実行の詳細な例

目次1つ。環境二。予防三つ。例Zabbix トリガーがしきい値に達すると、アラート メッセージの送信...