我正在尝试使用 NGINX 代理伴侣设置代理,但遇到了 502 Bad Gateway 错误...
这是我的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
Dockerfile:
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 网络....