【问题标题】:jwilder/nginx-proxy 503 Service Temporarily Unavailablejwilder/nginx-proxy 503 服务暂时不可用
【发布时间】:2019-12-29 15:00:26
【问题描述】:

我正在尝试使用 docker-compose、jwilder / nginx-proxy 和letsencrypt 伴侣构建一个Web 应用程序,但是当我尝试它时,nginx 会抛出一个503 错误。

“503 服务暂时不可用”

我的docker-compose文件如下

version: '2'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy:alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /etc/nginx/certs
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
    labels:
      - com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    restart: always
    environment:
      - NGINX_PROXY_CONTAINER=nginx-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    volumes_from:
      - nginx-proxy:rw

  www:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    expose:
      - "80"
    environment:
      - VIRTUAL_HOST=example.com, www.example.com
      - LETSENCRYPT_HOST=example.com, www.example.com
      - LETSENCRYPT_EMAIL=contact@example.com

我的 web 应用是用 react 构建的,我制作了这个 Dockerfile 来构建容器镜像:

FROM node:10-alpine as build

WORKDIR /usr/src/app

COPY package.json .

RUN npm install

COPY . .

RUN npm run build

FROM nginx:1.14-alpine

COPY --from=build /usr/src/app/build/ /usr/share/nginx/html

COPY www/nginx.config /etc/nginx/conf.d/default.conf

这是这张图片使用的 nginx.config:

server {
  server_name example.com www.example.com;
  listen 80 reuseport default;
  sendfile on;
  default_type application/octet-stream;
  gzip on;
  gzip_http_version 1.1;
  gzip_disable      "MSIE [1-6].";
  gzip_min_length   1100;
  gzip_vary         on;
  gzip_proxied      expired no-cache no-store private auth;
  gzip_types        text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  gzip_comp_level   9;
  root /usr/share/nginx/html;
  location / {
    try_files $uri $uri/ /index.html =404;
  }
}

网络应用程序图像工作正常,如果我只运行它,我可以打开它。问题出在 nginx-proxy 和伴随容器上,也许 nginx-proxy 找不到 www 容器?

有人可以帮忙吗?

【问题讨论】:

  • 您如何访问您的网络应用程序?根据您的撰写文件,您应该使用在您的VIRTUAL_HOST 变量中指定的example.com 访问它。您可能应该将另一个域添加到指向您的本地主机的该变量 - 您可以使用任何东西.lvh.me
  • 我在我的计算机中使用本地主机访问我的网络,我尝试在我的服务器中使用域,两者的错误是相同的。我对 nuxt 项目使用相同的设置,唯一的区别是 nuxt 项目在端口 3000 上使用节点环境运行,而此 Web 使用 nginx 在端口 80 上提供静态文件

标签: docker nginx jwilder-nginx-proxy


【解决方案1】:

您需要在后端环境变量中指定正确的VIRTUAL_HOST,并确保它们在同一个网络(或 docker bridge 网络)上

然后它应该会自动相互链接,并能够通过您提供的域进行访问。

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 2021-11-14
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2018-08-18
    • 2020-05-03
    • 2011-12-19
    • 2018-09-16
    相关资源
    最近更新 更多