【问题标题】:Trying to get nginx proxy to work on port 80 and 443 for node.js with docker试图让 nginx 代理使用 docker 在 node.js 的端口 80 和 443 上工作
【发布时间】:2018-05-21 06:23:09
【问题描述】:

所以我试图按照示例here 做一个 nginx 代理容器来处理所有其他容器。我尝试遵循配置环境变量的格式,以便站点通过 nginx-proxy 工作。到目前为止,如果我使用 80 或 443 以外的端口,我只部署了一个站点。我想知道我可以得到任何帮助,我在下面粘贴了两个文件。

Dockerfile

FROM node:carbon                                                                                                      
# Create app directory
WORKDIR ./home/username/website/production

COPY package*.json ./

RUN npm install

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "npm", "start" ]

docker-compose.yml

version: "3"                                                                                                          
    services:
        website:
            build: .
            volumes:
                - .:/home/user/website
                - ./home/user/website/node_modules
            ports:
                - "8080:8080"
            expose:
                - 80
            environment:
                VIRTUAL_HOST: domain.com
                LETSENCRYPT_HOST: domain.com
                LETSENCRYPT_EMAIL: domain.com
    networks:
        default:
            external:
                name: nginx-proxy      

我尝试监听 80 和 443 端口。但是,nginx 返回 503 错误。所以我想知道是否有人可以阐明应该如何配置它。

【问题讨论】:

  • 它在 8080 端口上工作吗?我在您的 docker-compose.yml 文件中看不到任何内容,将 80 或 443 映射到端口 8080,这是您的节点应用程序正在侦听的端口
  • 另外,您是否使用节点服务?您的应用程序在哪个端口上侦听?您需要将 443/80 映射到该端口
  • 我现在像 app.listen(80) 一样在端口 80 上服务,当我让它与端口 8080 一起工作时,我将端口行添加到 docker-compose 文件中。我实际上正在考虑通过普通 docker 尝试它,就像它在 docker 容器的 GitHub 上一样。

标签: node.js docker nginx docker-compose nginx-reverse-proxy


【解决方案1】:

所以我让它部署了两个单独的容器,一个作为 domain.com,另一个作为 subdomain.domain.com,两个都监听端口 80。该站点甚至默认为 https,就像 nginx 处理的那样。我没有使用 docker-compose.yml 文件,而是按照github page 的说明重新编写了 nginx-proxy,而不是使用普通 docker 的博客。之后,我使用它们的格式进行部署,如下所示:

docker run --detach \
    --name your-proxyed-app
    --env "VIRTUAL_HOST=subdomain.yourdomain.tld" \
    --env "LETSENCRYPT_HOST=subdomain.yourdomain.tld" \
    --env "LETSENCRYPT_EMAIL=mail@yourdomain.tld" \
    nginx

这些都可以在他们的wiki here. 上找到,不胜感激。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 2023-03-31
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2017-01-29
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多