ページへ戻る
印刷
技術系備忘録/Docker/SSLアクセラレータ&リバースプロキシ
をテンプレートにして作成 ::
シンクリッジ
xpwiki
:技術系備忘録/Docker/SSLアクセラレータ&リバースプロキシ をテンプレートにして作成
開始行:
#contents
SSLアクセラレータ兼リバースプロキシの docker-compose です。
この用途ではかなりメジャーな jwilder/nginx-proxy と jrcs/...
少しの設定を書くだけで Let's Encrypt の証明書の取得と更新...
スバラシイです。
というわけで自分も使ってみようと思たのですが、ちょっと困...
今回の自分のケースでは、webサーバーは既に別にあって、しか...
jwilder/nginx-proxy、jrcs/letsencrypt-nginx-proxy-compani...
Webサーバーは同じhostにdockerコンテナとして稼働しているこ...
&font(80%){証明書の設定などは Webサーバーコンテナの環境変...
そこで、Webサーバーと思わせ実はリバースプロキシなコンテナ...
* 図
インターネット
│
│Port443
│
┌───│───── Linux PC ────────────────┐
│ │ ...
│ ┌┴─────────┐ ┌────────────┐ │
│ │jwilder/nginx-proxy │ │jrcs/letsencrypt-・・ │ │
│ │SSLアクセラレータ │ │Let's Encrypt 取得/更新 │ │
│ │(リバースプロキシ)│ │ │ │
│ └┬─────────┘ └────────────┘ │
│ │ ...
│ │Port80 ...
│ │ ...
│ ┌┴───────────────────┐ │
│ │nginx │ ...
│ │Webサーバーと思わせ実はリバースプロキシ │ ...
│ └┬───────────────────┘ │
│ │ ...
└───│──────────────────────────┘
│
│Port80
│
┌───│───── Windows PC ───────────────┐
│ │ ...
│ ┌┴──────────┐ │
│ │Webサーバー IISとか │ ...
│ └───────────┘ │
│ ...
└──────────────────────────────┘
こんな感じで、見ての通り余計なプロキシが1つ挟まっていま...
いささか非効率なのは否めませんが、一応期待通りに動作して...
* docker-compose ファイル一覧
├ docker-compose.yml
├ nginx-proxy
│ └ custom.conf
└ bridge-1
└ default.conf
** docker-compose.yml
version: '3'
services:
nginx-proxy:
image: jwilder/nginx-proxy
labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companio...
ports:
# Let's Encrypt が証明書を発行する際、名前解決後にポ...
- 80:80
- 443:443
volumes:
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs:ro
- ./nginx-proxy/custom.conf:/etc/nginx/conf.d/cust...
restart: always
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./certs:/etc/nginx/certs:rw
# environment:
# - NGINX_PROXY_CONTAINER=nginx-proxy やり方が...
# - NGINX_DOCKER_GEN_CONTAINER=nginx-proxy うまく探...
restart: always
bridge-1:
image: nginx:latest
volumes:
- ./bridge-1/default.conf:/etc/nginx/conf.d/defaul...
- ./bridge-1:/var/www/html
environment:
- VIRTUAL_PORT=80
# ↓ 環境に合わせて変更のこと
- VIRTUAL_HOST=example.com
- LETSENCRYPT_HOST=example.com
- LETSENCRYPT_EMAIL=info@example.com
restart: always
volumes:
vhost:
html:
** nginx-proxy/custom.conf
# バージョン情報を非表示
server_tokens off;
# クライアントリクエストボディ上限を無制限
client_max_body_size 0;
** bridge-1/default.conf
server {
listen 0.0.0.0:80;
server_name localhost;
location / {
# ↓ 環境に合わせて変更のこと
proxy_pass http://192.168.1.100:80/;
proxy_redirect off;
proxy_set_header Host $http_host;
# proxy_set_header X-Real-IP $remote_addr; ...
proxy_set_header X-Forwarded-For $proxy_add_x_fo...
client_max_body_size 0;
}
}
* よもやま
-常時SSLが常識のようになっていますので、無料で証明書を発...
--Let's Encrypt はワイルドカード証明書も発行できるような...
証明書の更新時にも新たに書き換える必要があるので、APIが提...
が、今回のこの環境であれば、サブドメインを使いたい場合に...
-昨今はクラウド環境が充実してて、わざわざ自前でSSLアクセ...
Let's Encryptや、それを簡単につかえるdockerイメージの作者...
終了行:
#contents
SSLアクセラレータ兼リバースプロキシの docker-compose です。
この用途ではかなりメジャーな jwilder/nginx-proxy と jrcs/...
少しの設定を書くだけで Let's Encrypt の証明書の取得と更新...
スバラシイです。
というわけで自分も使ってみようと思たのですが、ちょっと困...
今回の自分のケースでは、webサーバーは既に別にあって、しか...
jwilder/nginx-proxy、jrcs/letsencrypt-nginx-proxy-compani...
Webサーバーは同じhostにdockerコンテナとして稼働しているこ...
&font(80%){証明書の設定などは Webサーバーコンテナの環境変...
そこで、Webサーバーと思わせ実はリバースプロキシなコンテナ...
* 図
インターネット
│
│Port443
│
┌───│───── Linux PC ────────────────┐
│ │ ...
│ ┌┴─────────┐ ┌────────────┐ │
│ │jwilder/nginx-proxy │ │jrcs/letsencrypt-・・ │ │
│ │SSLアクセラレータ │ │Let's Encrypt 取得/更新 │ │
│ │(リバースプロキシ)│ │ │ │
│ └┬─────────┘ └────────────┘ │
│ │ ...
│ │Port80 ...
│ │ ...
│ ┌┴───────────────────┐ │
│ │nginx │ ...
│ │Webサーバーと思わせ実はリバースプロキシ │ ...
│ └┬───────────────────┘ │
│ │ ...
└───│──────────────────────────┘
│
│Port80
│
┌───│───── Windows PC ───────────────┐
│ │ ...
│ ┌┴──────────┐ │
│ │Webサーバー IISとか │ ...
│ └───────────┘ │
│ ...
└──────────────────────────────┘
こんな感じで、見ての通り余計なプロキシが1つ挟まっていま...
いささか非効率なのは否めませんが、一応期待通りに動作して...
* docker-compose ファイル一覧
├ docker-compose.yml
├ nginx-proxy
│ └ custom.conf
└ bridge-1
└ default.conf
** docker-compose.yml
version: '3'
services:
nginx-proxy:
image: jwilder/nginx-proxy
labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companio...
ports:
# Let's Encrypt が証明書を発行する際、名前解決後にポ...
- 80:80
- 443:443
volumes:
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs:ro
- ./nginx-proxy/custom.conf:/etc/nginx/conf.d/cust...
restart: always
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./certs:/etc/nginx/certs:rw
# environment:
# - NGINX_PROXY_CONTAINER=nginx-proxy やり方が...
# - NGINX_DOCKER_GEN_CONTAINER=nginx-proxy うまく探...
restart: always
bridge-1:
image: nginx:latest
volumes:
- ./bridge-1/default.conf:/etc/nginx/conf.d/defaul...
- ./bridge-1:/var/www/html
environment:
- VIRTUAL_PORT=80
# ↓ 環境に合わせて変更のこと
- VIRTUAL_HOST=example.com
- LETSENCRYPT_HOST=example.com
- LETSENCRYPT_EMAIL=info@example.com
restart: always
volumes:
vhost:
html:
** nginx-proxy/custom.conf
# バージョン情報を非表示
server_tokens off;
# クライアントリクエストボディ上限を無制限
client_max_body_size 0;
** bridge-1/default.conf
server {
listen 0.0.0.0:80;
server_name localhost;
location / {
# ↓ 環境に合わせて変更のこと
proxy_pass http://192.168.1.100:80/;
proxy_redirect off;
proxy_set_header Host $http_host;
# proxy_set_header X-Real-IP $remote_addr; ...
proxy_set_header X-Forwarded-For $proxy_add_x_fo...
client_max_body_size 0;
}
}
* よもやま
-常時SSLが常識のようになっていますので、無料で証明書を発...
--Let's Encrypt はワイルドカード証明書も発行できるような...
証明書の更新時にも新たに書き換える必要があるので、APIが提...
が、今回のこの環境であれば、サブドメインを使いたい場合に...
-昨今はクラウド環境が充実してて、わざわざ自前でSSLアクセ...
Let's Encryptや、それを簡単につかえるdockerイメージの作者...
ページ名: