问答

wsl2 + docker 启动nginx容器无法访问node容器的端口

作者:admin 2021-07-06 我要评论

背景:想在win10子系统里用docker启动nginx和node服务,宿主机可以通过配置hosts的www.testweb.com域名访问node服务。 系统环境:win10子系统wsl2 的 ubuntu20.0...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
背景:想在win10子系统里用docker启动nginx和node服务,宿主机可以通过配置hosts的www.testweb.com域名访问node服务。

系统环境:win10子系统wsl2 的 ubuntu20.04

node代码:

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, '0.0.0.0', () => console.log(`Example app listening on port ${port}!`))

docker-compose.yml

# yaml 配置实例
version: '3'
services:
  node-server:
    image: node:10.19
    working_dir: /home/project/node-server
    command: node index.js
    restart: always # 自动重启
    container_name: node-server
    volumes:
      - ../node-server:/home/project/node-server
    ports:
      - 3000:3000
    expose: 
      - '3000'
    networks: 
      - front
      
  nginx:
    image: nginx:latest
    ports:
      - '80:80'
    container_name: nginx-node
    restart: always
    volumes: 
      - './website/nginx.conf:/etc/nginx/nginx.conf:ro'
      - './website/servers:/etc/nginx/servers:ro'
    networks: 
      - front
    links:
      - node-server
    depends_on: 
      - node-server
    extra_hosts:
      - 'www.testweb.com:127.0.0.1'
networks: 
  front:

nginx的配置:

server {
    listen 80;
    server_name  www.testweb.com;

    ## send request back to apache ##
    location / {
        # 接口代理转发 #
        proxy_pass  http://localhost:3000;
   }
}

宿主机的hosts:

127.0.0.1 www.testweb.com

控制台运行:

docker-compose -f "docker-dev/docker-compose.yml" up -d --build

docker-dev是子系统的一个目录。

目前找到的问题:两个容器之间连着front网络,无法进行容器间的访问,在nginx-node容器通过curl http://localhost:3000命令,提示访问被拒绝。

在宿主机路浏览器访问:
image.png

请问有大神可以指点一下吗?

###

你的问题在于 nginx 的 proxy_pass 是 127.0.0.1

我没记错的话, 你应该改成

proxy_pass  http://node-server:3000;

就行了, 即目标容器的"主机名", docker 内会有 dns 服务帮你解决解析

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • wsl2 + docker 启动nginx容器无法访问n

    wsl2 + docker 启动nginx容器无法访问n

  • 关于后端收藏模块如何设计

    关于后端收藏模块如何设计

  • 如何用纯Java代码,来做幸运大抽奖项目

    如何用纯Java代码,来做幸运大抽奖项目

  • 前后端分离的项目可以共用同一个端口吗

    前后端分离的项目可以共用同一个端口吗

腾讯云代理商
海外云服务器