NuxtJS 및 NGINX 프록시 컴패니언을 사용하는 502 잘못된 게이트웨이

NuxtJS 및 NGINX 프록시 컴패니언을 사용하는 502 잘못된 게이트웨이

NGINX 프록시 컴패니언을 사용하여 프록시를 설정하려고 하는데 502 잘못된 게이트웨이 오류가 발생했습니다...

내 docker-compose.yml은 다음과 같습니다.

  nuxtjs:
    build:
      context: .
      dockerfile: docker/nuxtjs/Dockerfile
    environment:
      API_BASE_URL: fff.com
      VIRTUAL_HOST: fff.com
      LETSENCRYPT_HOST: fff.com
    ports:
      - "8000:80"
    container_name: ${NUXTJS_CONTAINER_NAME}
    volumes:
      - ./front:/usr/src/app/
      - /usr/src/app/node_modules

도커파일:

FROM node:lts

# create destination directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# copy the app, note .dockerignore
COPY ./front /usr/src/app
RUN yarn

# build necessary, even if no static files are needed,
# since it builds the server as well
RUN yarn build

# expose 80 on container
EXPOSE 80

# set app serving to permissive / assigned
ENV NUXT_HOST=0.0.0.0
# set app port
ENV NUXT_PORT=80

# start the app
CMD [ "yarn", "dev" ]

그리고 프록시는 이를 로그에 표시합니다.

*40 no live upstreams while connecting to upstream, client: myip, server: fff.com, request: "GET /favicon.ico HTTP/2.0", upstream: "http://fff.com-upstream/favicon.ico", host: "xxx.com", referrer: "https://fff.com/"

그리고 conf가 생성되었습니다:

upstream fff.com {
        # Cannot connect to network 'webproxy' of this container
        # Fallback entry
        server 127.0.0.1 down;
}
server {
        server_name fff.com;
        listen 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Do not HTTPS redirect Let'sEncrypt ACME challenge
        location ^~ /.well-known/acme-challenge/ {
                auth_basic off;
                auth_request off;
                allow all;
                root /usr/share/nginx/html;
                try_files $uri =404;
                break;
        }
        location / {
                return 301 https://$host$request_uri;
        }
}
server {
        server_name fff.com;
        listen 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/fff.com.crt;
        ssl_certificate_key /etc/nginx/certs/fff.com.key;
        ssl_dhparam /etc/nginx/certs/fff.com.dhparam.pem;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/certs/fff.com.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" always;
        include /etc/nginx/vhost.d/default;
        location / {
                proxy_pass http://fff.com;
        }
}

누구든지 아이디어가 있나요?

감사해요

답변1

당신의 ports정의가 잘못되었습니다. 컨테이너의 포트 80을 호스트의 포트 8000으로 매핑하고 있지만 컨테이너는 포트 8000을 노출합니다.

ports:
  - "80:8000"

또는 포트 8000을 유지하려는 경우:

ports:
  - "8000"

답변2

해결됨: webproxy 네트워크에 프록시를 연결하는 것을 잊었습니다....

관련 정보