TLS/SSL で接続できる最低限の Nginx Dockerfile
FROM nginx:latest RUN apt-get update && apt-get install -y \ openssl \ ssl-cert \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* COPY ./conf.d/ssl.conf /etc/nginx/conf.d/
server { listen 443 ssl; server_name localhost; ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; location / { root /usr/share/nginx/html; index index.html index.htm; } }
- nginx version: nginx/1.15.5
- Docker の php:apache で OpenSSL を有効にする Dockerfile 等 – oki2a24 ではインストールしていた libssl-dev は不要だった。もしかしたらもともと不要かも。
- SSL/TLS証明書、 pem と key ファイルを用意するために、 ssl-cert をインストールしている。予めこれらのファイルが用意できていればこのパッケージのインストールは不要と思う。
- セキュリティ、パフォーマンスをデフォルト設定から向上させる簡単な Nginx の SSL 設定をメモ – oki2a24
使用したコマンドまとめ
# Docker イメージをビルド docker image build -t image_name:tag_name . # Docker イメージを一覧表示 docker image ls # コンテナを使い捨てで起動 docker container run --rm -d -p 80:80 -p 443:443 --name container_name image_name:tag_name # コンテナに入る docker container exec -it container_id_or_name bash # コンテナを停止 docker container stop container_id_or_name # コンテナの稼働状況を一覧表示 docker container ps -a # (ホストから操作) コンテナ内のファイルをホストへコピー docker container cp container_id_or_name:/path/to/file.conf file.conf # Nginx 設定の確認 nginx -t # Nginx 再起動 nginx -s reload
進め方
実際に Dockerfile を作り上げるまでに実行したコマンドや、進め方です。
# イメージをビルド docker build -t ns:latest . # コンテナを起動 (stop すれば自動的に削除) # -p オプションを 2 つ付けて、80 と 443 ポートを開けている点に注目 docker container run --rm -d -p 80:80 -p 443:443 --name ns1 ns:latest # コンテナを停止 docker container stop ns1 # コンテナに入る docker container exec -it ns1 bash # コンテナ内 # Dockerfile に書く予定のインストールするパッケージをインストールして試したい。 # まずは、パッケージリストの更新 apt-get update # いろいろインストール apt-get install openssl # ファイル編集にはやっぱり Vim apt-get install vim # 設定ファイルを編集したら、Nginx の再起動 nginx -s reload
おわりに
Nginx と php-fpm を連携してウェブサーバを立てたいです♪
HTTP だけではなく、 HTTPS 、つまり SSL/TLS も使いたいです。
ところが、 Nginx ではデフォルトでは使用できません。
Nginx と php-fpm を連携しきった状態から試行錯誤すると、いらぬところで壁にぶつかるかも知れませんので、最小限の構成で、有効にする手立てを確認いたしました。
スッキリしました♪
以上です。