我正在 docker compose 檔案上安裝 nginx 反向代理以及一些應用程式(netdata、filebrowser 等)。
我的想法是從我網路之外的計算機呼叫一個 urlhttp://netdata.myserver.com并指向 netdata。目前它在我做的時候作業http://myserver.com:19999/(最終目標是洗掉子域的埠)。
我在hosts檔案中有下一個配置:
127.0.0.1 myserver.com # thats not the ip, but you get the idea
所以我在 docker compose 檔案上有 netdata、filebrowser 和 nginx,如下所示:
version: '3'
services:
netdata:
image: netdata/netdata
ports:
- 19999:19999
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
filebrowser:
image: filebrowser/filebrowser
user: 501:501
ports:
- 20001:80
volumes:
- volumes and things go here
restart: unless-stopped
nginx:
image: nginx
ports:
- 80:80
volumes:
- default.conf:/etc/nginx/conf.d/default.conf:ro
environment:
- NGINX_HOST=myserver.com
然后在default.conf我有下一個配置
server {
server_name netdata.myserver.com;
location / {
proxy_pass http://netdata:19999;
}
listen 80;
}
但是它沒有按預期作業,當我去http://netdata.myserver.com我得到一個“無法到達這個網站”但是,如果我去http://myserver.com它確實為我回傳了網路資料;我也不明白為什么。
有人可以幫我弄這個嗎。謝謝。
uj5u.com熱心網友回復:
我認為這里可能存在一些問題。首先,如果您希望在 Nginx 后面托管兩個基于名稱的虛擬主機,則需要兩個server塊(每個塊一個)。所以你的default.conf檔案應該是這樣的:
server {
listen 80;
server_name myserver.com;
location / {
proxy_pass http://filebrowser:2001
}
}
server {
listen 80;
server_name netdata.myserver.com;
location / {
proxy_pass http://netdata:19999;
}
}
您還需要能夠決議兩個主機名,這意味著您的示例hosts檔案中缺少一個條目。你需要這樣的東西:
127.0.0.1 myserver.com netdata.myserver.com
有了這個配置,任何一個請求其他比
netdata.myserver.com將由您得到服務filebrowser
的容器。請求netdata.myserver.com將由
netdata容器提供。
如果有幫助,我在這里整理了一個可運行的示例
。這將需要一個hosts類似于以下內容的本地檔案:
127.0.0.1 myserver.com netdata.myserver.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/373557.html
