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 네트워크에 프록시를 연결하는 것을 잊었습니다....