我在本地主機上運行 nodejs,而 nginx 作為帶有 docker-compose 的 docker 容器運行
我無法與 node js 應用程式建立任何連接:
組態檔
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name licensing.cluster-ops.co;
location / {
proxy_pass http://md_license_server:3005;
proxy_set_header Host $host;
}
}
}
docker-compose.yml
version: "3.3"
services:
md_license_server:
image: root/md-license-server
expose:
- 3005
ports:
- 3005:3005
nginx:
image: nginx:latest
container_name: nginx
ports:
- 80:80
- 443:443
volumes:
- /etc/ssl/certs:/etc/ssl/certs
- /etc/ssl/private:/etc/ssl/private
- /root/docker/nginx.conf:/etc/nginx/nginx.conf
我嘗試了那里的一切。
extra_hosts: - "host.docker.internal:127.0.0.1"
^這行不通。
節點應用程式在本地主機上運行良好。我嘗試進行一些 curl 呼叫,回應正常。
這是我從 docker 收到的錯誤訊息:
2021/12/06 14:29:06 [error] 24#24: *3 connect() failed (111: Connection refused)
while connecting to upstream, client: 139.59.147.204, server:
localhost, request: "GET /ping HTTP/1.1", upstream: "http://172.19.0.2:3005
/ping", host:...
看起來“172.19.0.2:3005”是 md_license 服務的 IP。
跑步
docker-compose exec md_license_server curl http://localhost:3005/ping 回傳真
這意味著節點服務器在容器內作業。
我覺得這與 nginx 有關。
uj5u.com熱心網友回復:
很可能您在 docker 網路和主機網路之間有 IP 范圍重疊。但我們現在不要假設:
如果您在桌面上使用 Docker(Windows、Mac),則無需添加額外的主機。直接地:
upstream backend { server host.docker.internal:3005; }如果您沒有使用 Docker for Desktop (Linux),則需要檢查主機的私有 IP
hostname -i,然后將該私有 IP 放入 nginx 配置中# assuming that `hostname -i` prints 192.168.x.y upstream backend { server 192.168.x.y:3005; }
現在,如果您想動態放置它,這是另一個主題,但您可以檢查 nginx 模板。
回到第一個假設:無論如何,如果 Docker 網路和您的主機網路之間存在重疊,路由器將不會將資料包轉發到主機,而是繼續在 Docker 網路內部。所以讓我們檢查一下:
- 檢查您的主機 IP:
hostname -i - 檢查您的 Docker 容器 IP:
docker-compose exec nginx hostname -i
如果有重疊,您將需要提供自定義 docker 網路:
services:
nginx:
image: ....
networks:
custom-net: # attach nginx container to that network
ipv4_address: 172.24.0.22 # assign static IP for your container from the network defined below.
networks:
custom-net: # create new docker network
ipam:
config:
- subnet: 172.24.0.0/24 # with explicit CIDR range
uj5u.com熱心網友回復:
這是由 fastify 引起的問題。
解決方案可以在這里找到:https : //github.com/fastify/fastify/issues/935
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/376065.html
下一篇:nginx重定向特定的子域和路徑
