婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 為docker中的nginx配置https的方法步驟

為docker中的nginx配置https的方法步驟

熱門標簽:云會外呼系統 智能電話機器人坐席 申請400電話價格多少 安陽ai電銷機器人軟件 柳州市機器人外呼系統報價 外呼系統不彈窗 外呼系統的經營范圍 涪陵商都400電話開通辦理 廈門營銷外呼系統平臺

沒有 https 加持的網站會逐漸地被瀏覽器標記為不安全的,所以為網站添加 https 已經變得刻不容緩。對于商業網站來說,花錢購買 SSL/TLS 證書并不是什么問題。但對于個人用戶來說,如果能有免費的 SSL/TLS 證書可用將會是非常幸福的事情!Let's Encrypt 就是一個提供免費 SSL/TLS 證書的網站,由于其證書期限只有三個月,所以需要我們用自動化的方式去更新證書。本文將介紹如何為通過 docker 運行的 nginx 中的站點添加 https 支持,并自動完成證書的更新。本文的演示環境為:運行在 Azure 上的 Ubuntu 16.04 主機(此圖來自互聯網):

準備環境

在 Azure 上創建 Ubuntu 類型的虛機事件非常容易的事情,安裝 docker 也無須贅言。比較容易忽略的是配置合適的網絡安全組規則,比如打開 80 和 443 端口:

還有就是配置 DNS:

創建一個普通的 http 站點

簡單起見,直接使用一個鏡像中的 nodejs 應用作為 web 站點:

$ docker pull ljfpower/nodedemo
$ docker network create -d bridge webnet
$ docker run -d --restart=always --expose=3000 \

   --network=webnet --name=myweb \

   ljfpower/nodedemo

在用戶的家目錄下創建 nginx 目錄及其子目錄 conf.d、conf.crt 和 html,創建 logs 目錄及其子目錄 nginx 和 letsencrypt:

$ mkdir -p nginx/{conf.d,conf.crt,html}
$ mkdir -p logs/{nginx,letsencrypt}

說明,本文演示的示例中需要我們手動創建的文件和目錄結構如下:

創建 nginx/nginx.conf 文件,內容如下:

user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid  /var/run/nginx.pid;

events {
 worker_connections 2048;
}

http {
 include  /etc/nginx/mime.types;
 default_type application/octet-stream;

 sendfile  on;
 keepalive_timeout 65;
 client_max_body_size 10M;

 include /etc/nginx/conf.d/*.conf;
}

然后創建 nginx/conf.d/default.conf 文件,內容如下:

upstream web{
 server myweb:3000;
}
server {
 listen  80;
 listen  [::]:80;
 server_name filterinto.com www.filterinto.com;

 location ^~ /.well-known/acme-challenge/ {
  default_type "text/plain";
  root /usr/share/nginx/html;
 }
 location = /.well-known/acme-challenge/ {
  return 404;
 }
 location / {
  proxy_pass http://web;
 }
}

其中 /.well-known/acme-challenge/ 目錄是 certbot 工具在生成證書時創建的。接下來創建文件 nginx/html/index.html 文件,內容如下:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8" />
 <title>Let's Encrypt First Time Cert Issue Site</title>
</head>
<body>
 <h1>Hello HTTPS!</h1>
 <p>
  Just used for the very first time SSL certificates are issued by Let's Encrypt's
  certbot.
 </p>
</body>
</html>

這個頁面也是 certbot 在生成證書時需要用到的。最后讓我們啟動容器(在用戶的家目錄下執行下面的命令):

$ docker run -d \

 -p 80:80 \

 -v $(pwd)/nginx/conf.d:/etc/nginx/conf.d:ro \

 -v $(pwd)/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \

 -v $(pwd)/logs/nginx:/var/log/nginx \

 -v $(pwd)/nginx/html:/usr/share/nginx/html \

 --restart=always \

 --name=gateway \

 --network=webnet \

 nginx:1.14

注意:這時沒有映射 443 端口,也沒有掛載存放證書的目錄。只能以 http 協議訪問訪問我們的站點:

為站點生成 SSL/TLS 證書

Let's Encrypt 是一個提供免費 SSL/TLS 證書的網站,它為用戶提供了 certbot 工具用來生成 SSL/TLS 證書。方便起見,我們把 certbot 簡單的封裝到容器中。在用戶的家目錄下創建 certbot 目錄,進入 certbot 目錄并把下面的內容保存到 Dockerfile 文件中:

FROM alpine:3.4
RUN apk add --update bash certbot
VOLUME ["/etc/letsencrypt"]

然后執行下面的命令創建 certbot 鏡像:

$ docker build -t certbot:1.0 .

然后在 certbot 目錄下創建自動更新證書的腳本 renew_cert.sh,內容如下:

#!/bin/bash
WEBDIR="$1"
LIST=('filterinto.com' 'www.filterinto.com')
LED_LIST=()
WWW_ROOT=/usr/share/nginx/html
for domain in ${LIST[@]};do
 docker run \

  --rm \

  -v ${WEBDIR}/nginx/conf.crt:/etc/letsencrypt \

  -v ${WEBDIR}/logs/letsencrypt:/var/log/letsencrypt \

  -v ${WEBDIR}/nginx/html:${WWW_ROOT} \

  certbot:1.0 \

  certbot certonly --verbose --noninteractive --quiet --agree-tos \

  --webroot -w ${WWW_ROOT} \

  --email="nick.li@grapecity.com" \

  -d "$domain"
 CODE=$?
 if [ $CODE -ne 0 ]; then
  FAILED_LIST+=($domain)
 fi
done

# output failed domains
if [ ${#FAILED_LIST[@]} -ne 0 ];then
 echo 'failed domain:'
 for (( i=0; i<${#FAILED_LIST[@]}; i++ ));
 do
  echo ${FAILED_LIST[$i]}
 done
fi

在用戶的家目錄中執行 ./renew_cert.sh /home/nick 命令就可以生成新的證書(/home/nick 為當前用戶的家目錄)。生成的證書被保存在 /home/nick/nginx/conf.crt/live 目錄下,以域名命名的目錄下保存著該域名的證書:

然后去檢查下 nginx/html 目錄,發現多了一個隱藏的 .well-known 目錄,這個目錄就是在生成證書時創建的:

有了 SSL/TLS 證書,接下來我們就可以配置 https 站點了。

為站點配置 SSL/TLS 證書

有了 SSL/TLS 證書,接下來更新 nginx 的配置文件就可以了,更新 nginx/conf.d/default.conf 的內容如下:

upstream web{
 server myweb:3000;
}

server {
 listen  80;
 listen  [::]:80;
 server_name filterinto.com www.filterinto.com;

 location ^~ /.well-known/acme-challenge/ {
  default_type "text/plain";
  root /usr/share/nginx/html;
 }
 location = /.well-known/acme-challenge/ {
  return 404;
 }
 return 301 https://$server_name$request_uri;
}
server {
 listen  443;
 listen  [::]:443;
 server_name filterinto.com;

 # enable ssl
 ssl      on;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_ciphers    "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";

 # config ssl certificate
 ssl_certificate   conf.crt/live/filterinto.com/fullchain.pem;
 ssl_certificate_key  conf.crt/live/filterinto.com/privkey.pem;

 location ^~ /.well-known/acme-challenge/ {
  default_type "text/plain";
  root /usr/share/nginx/html;
 }
 location = /.well-known/acme-challenge/ {
   return 404;
 }
 location / {
  proxy_pass http://web;
 }
}
server {
 listen  443;
 listen  [::]:443;
 server_name www.filterinto.com;

 # enable ssl
 ssl      on;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_ciphers    "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";

 # config ssl certificate
 ssl_certificate   conf.crt/live/www.filterinto.com/fullchain.pem;
 ssl_certificate_key  conf.crt/live/www.filterinto.com/privkey.pem;

 location ^~ /.well-known/acme-challenge/ {
  default_type "text/plain";
  root /usr/share/nginx/html;
 }
 location = /.well-known/acme-challenge/ {
   return 404;
 }
 location / {
  proxy_pass http://web;
 }
}

然后刪除容器 gateway 并用下面的腳本重新創建:

$ docker run -d \

 -p 80:80 \

 -p 443:443 \

 -v $(pwd)/nginx/conf.d:/etc/nginx/conf.d:ro \

 -v $(pwd)/nginx/conf.crt:/etc/nginx/conf.crt:ro \

 -v $(pwd)/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \

 -v $(pwd)/logs/nginx:/var/log/nginx \

 -v $(pwd)/nginx/html:/usr/share/nginx/html \

 --restart=always \

 --name=gateway \

 --network=webnet \

 nginx:1.14

現在就只能通過 https 來訪問站點了:

自動更新證書

Let's Encrypt 提供的 SSL/TLS 證書期限只有三個月,每過三個月要手動更新一次證書也夠嗆的,下面我們介紹自動更新證書的方法。

其實我們的配置已經為自動化更新證書提供了最大的便利(其實是使用 docker 帶來的便利),在定時任務中添加下面兩條記錄就可以了:

0 0 1 * * /home/nick/certbot/renew_cert.sh /home/nick >> /home/nick/logs/cert.log 2>> /home/nick/logs/cert.error.log
0 1 1 * * docker exec gateway nginx -s reload

每月 1 號的 0 點更新證書,一個小時后 reload nginx 的配置。

總結

Let's Encrypt 是一個非常棒的網站,對于初學者和個人來說,能夠幫助我們輕松的實現 HTTPS 站點(還是免費的)!在方便的同時,其隱患也是顯而易見的:既然誰都可以無門檻的獲得 SSL/TLS 證書,那么非法網站也可以通過它把自己偽裝成看上去合法的站點。 所以千萬不要片面的認為 HTTPS 站點就是安全的!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:巴中 福州 南充 綏化 蕪湖 晉城 撫順 孝感

巨人網絡通訊聲明:本文標題《為docker中的nginx配置https的方法步驟》,本文關鍵詞  為,docker,中的,nginx,配置,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《為docker中的nginx配置https的方法步驟》相關的同類信息!
  • 本頁收集關于為docker中的nginx配置https的方法步驟的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲精品一区二区三区蜜桃下载| 91美女视频网站| 经典三级视频一区| 精品国产1区2区3区| 韩国在线一区二区| 午夜欧美视频在线观看| 欧美日韩一级二级| 成熟亚洲日本毛茸茸凸凹| 精品处破学生在线二十三| 色综合天天综合色综合av| 日韩国产欧美在线播放| 久久久青草青青国产亚洲免观| 看电视剧不卡顿的网站| 欧美精品一区二区三区蜜桃 | www国产精品av| 欧美在线不卡一区| 色视频一区二区| 国产亚洲欧洲一区高清在线观看| 欧美日韩一区中文字幕| 欧美高清激情brazzers| 2021中文字幕一区亚洲| 久久久久久久久久美女| 精品日韩在线观看| 久久综合九色综合久久久精品综合| 91精品办公室少妇高潮对白| 欧美性大战久久久久久久| 国产一区91精品张津瑜| 人人精品人人爱| 青青青伊人色综合久久| 亚洲动漫第一页| 夜夜嗨av一区二区三区| 一卡二卡欧美日韩| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲精品免费视频| 亚洲裸体在线观看| 日本欧美久久久久免费播放网| 不卡一区二区三区四区| 欧洲精品视频在线观看| 精品美女在线播放| 亚洲午夜在线电影| 九九精品视频在线看| 色综合网站在线| 精品国产乱码久久久久久夜甘婷婷 | 成人网页在线观看| 欧美美女一区二区在线观看| 国产一区不卡视频| 91小视频免费看| 亚洲国产视频直播| 欧美成人aa大片| 高清不卡在线观看| 亚洲中国最大av网站| 在线免费一区三区| 国产一区二区三区久久久| www欧美成人18+| 成人视屏免费看| 偷拍亚洲欧洲综合| 久久综合av免费| 欧美日韩高清一区二区不卡| 一区二区高清免费观看影视大全| 欧洲av在线精品| 亚洲成人免费影院| 色噜噜狠狠一区二区三区果冻| 91黄色激情网站| 亚洲成人综合在线| 91蜜桃免费观看视频| 欧美不卡一区二区三区| 婷婷久久综合九色综合绿巨人 | 久久久久免费观看| 国产精品77777竹菊影视小说| 欧美日韩一区二区三区高清| 亚洲欧美日韩系列| 成人午夜av在线| 亚洲人成网站色在线观看| 色哟哟亚洲精品| 亚洲成人av福利| 日韩免费高清视频| 国产激情视频一区二区在线观看 | 日韩视频永久免费| 国产成人免费视频网站高清观看视频| 国产日韩欧美精品在线| 95精品视频在线| 狠狠网亚洲精品| 亚洲精品视频在线| 日韩欧美一二三| 91国产丝袜在线播放| 国内精品伊人久久久久av影院| 国产午夜精品一区二区三区视频| 9i看片成人免费高清| 美日韩一区二区三区| 亚洲欧美激情插| 亚洲国产精品传媒在线观看| 欧美xxxxx牲另类人与| 欧美亚洲日本国产| 色婷婷综合久久久中文字幕| 国产精品久久久爽爽爽麻豆色哟哟| 欧美性大战xxxxx久久久| 99re在线视频这里只有精品| 色爱区综合激月婷婷| 色网综合在线观看| 日韩一级大片在线| 欧美精品乱人伦久久久久久| 欧美性欧美巨大黑白大战| 337p亚洲精品色噜噜狠狠| 欧美日韩免费高清一区色橹橹| 91精品综合久久久久久| 日韩欧美在线网站| 欧美成人艳星乳罩| 一区二区三区在线播| 国产一区二区三区最好精华液| 国产精品资源网站| 欧美日韩国产综合视频在线观看| 日韩精品最新网址| 亚洲美女在线国产| 韩日精品视频一区| 欧美日韩一区二区三区高清| 欧美韩日一区二区三区| 开心九九激情九九欧美日韩精美视频电影 | 91九色02白丝porn| 日韩免费观看高清完整版| 中文字幕一区二区在线观看| 日韩国产一二三区| 日韩高清不卡一区二区三区| 亚洲人成亚洲人成在线观看图片| 日韩中文字幕麻豆| 一本久久综合亚洲鲁鲁五月天 | 日韩精品久久理论片| 成人久久18免费网站麻豆 | 色综合久久久久综合| 国产欧美一区二区精品性| 久久成人18免费观看| 欧美精品一区二区三区高清aⅴ| 亚洲福利电影网| 欧洲一区在线观看| 一区二区三区高清不卡| 成人亚洲精品久久久久软件| 国产精品无遮挡| 成人精品亚洲人成在线| 午夜不卡av在线| 天天色天天操综合| 成人免费毛片嘿嘿连载视频| 欧美成人伊人久久综合网| 亚洲v中文字幕| 国产精品91xxx| 91猫先生在线| 亚洲精品一区二区在线观看| 久久99久久精品| 国产精品黄色在线观看| 91精品国产入口| 91精品久久久久久蜜臀| 国产91在线|亚洲| 亚洲一区二区精品视频| 久久亚洲免费视频| 欧美亚洲国产怡红院影院| 国产精品一二三在| 免费成人av在线| 亚洲综合丝袜美腿| 亚洲日韩欧美一区二区在线| 国产三级精品三级在线专区| 欧美三级电影在线看| 91在线观看高清| 国产剧情在线观看一区二区| 亚洲va中文字幕| 亚洲成年人网站在线观看| 国产精品卡一卡二卡三| 欧美激情一区在线观看| 久久久久亚洲综合| 欧美成人video| 久久免费看少妇高潮| 日韩精品一区二区三区视频在线观看| 成人免费精品视频| 99久久精品免费精品国产| 国产成人免费高清| 久久蜜桃一区二区| 日本高清不卡aⅴ免费网站| 99久久亚洲一区二区三区青草| 亚洲欧美在线观看| 成人久久久精品乱码一区二区三区 | 国模少妇一区二区三区| 欧美在线观看一区| 亚洲另类春色校园小说| 在线欧美小视频| 精品一二线国产| 欧美电影免费观看高清完整版在| 看电影不卡的网站| 国产日韩欧美一区二区三区综合| 亚洲成在人线免费| 日韩视频免费观看高清完整版在线观看 | av毛片久久久久**hd| 国产成人免费视频网站高清观看视频| 91美女片黄在线观看| 欧美不卡一区二区三区四区| 亚洲特黄一级片| 99久久国产免费看| 亚洲三级免费观看| 99re这里只有精品首页| 亚洲欧洲精品一区二区三区 | 成人在线视频一区二区| 色婷婷综合五月| 在线观看欧美日本| 丰满放荡岳乱妇91ww|