在 ubuntu 使用 docker 架設 nginx 靜態網站伺服器
主要是要講 npm (Nginx Proxy Manager) 至於架設的東西就隨意選個最簡單的 Nginx 當範例架設一個簡易網站就好
安裝 docker 套件
使用官方懶人包安裝docker
curl -fsSL get.docker.com|sudo sh; sudo usermod -aG docker $USER
創建範例網站
建立範例網站
# 建立範例 index.html
sudo mkdir -p /srv/www/mysite.com/html
echo '<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>我的網站</title>
</head>
<body>
<h1>歡迎來到我的 nginx 容器網站!</h1>
<p>這是來自 /srv/www/mysite.com 的內容。</p>
</body>
</html>' | sudo tee /srv/www/mysite.com/html/index.html > /dev/null
啟動 nginx 容器
使用簡易腳本來自動創建範本
# 安裝
docker run -d \
--name www.mysite.com \
-v /srv/www/mysite.com/html:/usr/share/nginx/html:ro \
-p 8081:80 \
--restart=always \
nginx:alpine
安裝好之後測試一下
curl http://localhost:8081
有的看到範例內容的話就完成了
檢視網站內容
直接把貼到瀏覽器上就可以看到網站內容了,如果是谷歌的機器就把 localhost 換成公開的 IP 即可,記得事後加強一下安全就好。
或是使用 Vscode 用 SSH 連入,預設會自動轉發遠端的端口到本地,一樣可以用 localhost:8081 打開遠端沒有開放的網頁。
開放端口給外部IP連接
在內布已經可以用 localhost:8081 看到網站之後再來要把你的IP公開出去,在家用的網路中通常需要再路由器中設定虛擬伺服器轉發
下面以 ASUS 的路由器為範例,這台路由器必須直接輸入 Hinet 連線帳密碼取得對外IP才有效,如果是宿舍環境無權動到最上層路由的話就不適用這個方式了
要是無權動路由器又想自架的話,一個免費的方案是用 cloudflare tunnel 突破NAT的阻擋
位置在
左邊::外部網路(WAN) → 頂部分頁::虛擬伺服器
進來之後打開功能並且輸入
成功之後會長這個樣子
這一整條的解讀就是把 真實IP:80 轉發到 192.168.3.92:8081 的意思
來源IP是白名單只轉發特定IP,留空就行不用限制
再來就可以在瀏覽器中輸入 http://真實IP 即可看到剛剛建造的網頁了
要註冊自己的免費域名可以參考下一篇
CHG: 使用 duckdns 轉發自建的靜態網頁伺服器
其他:: 快速啟動 nginx 容器
自己寫的一個快速部屬函式
source <(curl -sL gist.githubusercontent.com/hunandy14/7dafceef67cb47db38620a3c2479792d/raw)
run_nginx_site mysite.com 8081
就可以部署好了,預設會部署在 /srv/www/$DOMAIN/html
詳細使用說明自行點進去 gist 裡面看說明
要刪除該容器可以使用下面指令刪掉
docker stop www.mysite.com && docker rm www.mysite.com
沒有留言:
張貼留言