# nginx-proxy + acme-companion使用紀錄 nginxproxy:https://github.com/nginx-proxy/nginx-proxy acme-companion:https://github.com/nginx-proxy/acme-companion ## 介紹 ### nginx-proxy nginx-proxy是一個在其他application container建立的時候自動配置reverse proxy confing的Nginx container。 #### Basic Usage 最基本的用法跟application與nginx-proxy使用同一份docker-compose的用法可以參考github上的說明,以下是分開建立的用法。 1. 建立nginx-proxy container docker ``` docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro nginxproxy/nginx-proxy ``` docker-compose ``` version: '3.7' services: nginx-proxy: image: nginxproxy/nginx-proxy ports: - "80:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro networks: default: name: bridge ``` 2. 在建立application container時加入VIRTUAL_HOST,其值為該application對應的domain name docker ``` docker run -e VIRTUAL_HOST=whoami.local -e VIRTUAL_PORT=8000 --expose 8000 jwilder/whoami ``` docker-compose ``` version: "3.7" services: whoami: image: jwilder/whoami expose: - "8000" environment: - VIRTUAL_HOST=whoami.local - VIRTUAL_PORT=8000 networks: default: name: bridge ``` 要注意application跟nginx-proxy要在同一個network下,尤其是使用docker-compose的時候。 另外application container如果不是使用80 port的話,需要在application container中加入VIRTUAL_PORT環境變數,並確定使用的port有expose出來。 3. 測試 ``` curl -H "Host: foo.bar.com" localhost ``` 以上command可以將headers中的Host改成指定的值,方便在本機端測試。 應該會得到類似下面的response ``` I'm 5b129ab83266 ``` ### acme-companion acme-companion是一個跟nginx-proxy配合使用的SSL自動配置與刷新container。 #### Basic Usage 請參考Github docker-compose 版本請參考下面 ``` version: "3.7" services: nginx-proxy: image: nginxproxy/nginx-proxy ports: - 80:80 - 443:443 volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - certs:/etc/nginx/certs - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html nginx-proxy-acme: image: nginxproxy/acme-companion volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - acme:/etc/acme.sh - certs:/etc/nginx/certs - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html environment: - DEFAULT_EMAIL=<EMAIL> #encounter error when didn't add below parameter. - NGINX_PROXY_CONTAINER=<nginx-proxy countainer name> networks: default: name: brige volumes: certs: vhost: html: acme: ``` application container中只要多加LETSENCRYPT_HOST: <domain name>的環境變數就就可以了。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up