当前位置: 首页 > 知识库问答 >
问题:

Jwilder/nginx-Proxy 503服务暂时不可用

谈秦斩
2023-03-14

我正在尝试使用docker-compose和jwilder/nginx-proxy以及letsencrypt companion构建一个web应用程序,但是当我尝试时,nginx向我抛出一个503错误。

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;
  }
}

web应用程序映像工作良好,我可以打开它,如果我只运行这个。问题是nginx-proxy和同伴容器,可能nginx-proxy无法找到www容器?

共有1个答案

尚棋
2023-03-14

您需要在backends环境变量中指定正确的virtual_host,并确保它们位于同一网络(或docker桥接器网络)上

然后它应该自动链接到彼此,并能够通过您提供的域访问。

 类似资料:
  • 按照下面keydropeat文档站点上的说明,我正在尝试将keydropeat设置为在Kubernetes集群中运行。我设置了一个入口控制器,它成功地用于一个简单的测试页面。Cloudflare将域指向入口控制器IP。 Keyclope成功部署( 成功检索页面:

  • 我在C中使用tcp套接字服务器和客户端。使用AF_INET、SOCK_STREAM和IPPROTO_TCP 在sock send()命令上有一个可能导致“资源暂时不可用”的帖子,其中Davide Berra说 这是因为您使用的是非阻塞套接字,并且输出缓冲区已满。 从send()手册页

  • 既然我不能复制它,我想知道我如何才能追踪这个问题?

  • 让Nginx入口控制器在我的Kubernetes集群中工作时遇到了一些问题。我已经创建了nginx入口部署、服务、角色等,根据https://kubernetes.github.io/ingress-nginx/deploy/ 我还部署了一个简单的hello world应用程序,它可以监听端口8080 并为其创建了服务 最后,我创建了一个TLS机密(

  • 来自服务器的错误(InternalError):创建“stdin”时出错:发生内部错误:调用webhook“validate.nginx.ingress.kubernetes.io”失败:Post https://ingress-nginx-controller-crission.ingress-nginx.svc:443/extensions/v1beta1/ingress?timeout=30

  • 线程名称:线程组1-1样本开始:2022-04-26 14:22:39 IST加载时间:230连接时间:159延迟:226字节大小:11283发送字节:498字节标头大小:797字节主体大小:10486样本计数:1错误计数:1数据类型("text"|"bin"|"):文本响应代码:503响应消息:服务暂时不可用 结果字段: 内容类型: 文本/网页;字符集 = UTF-8 数据编码:UTF-8