在Google Cloud上部署Docker Nginx FastAPI应用程序时发生上游超时错误

bxpogfeg  于 2022-12-11  发布在  Docker
关注(0)|答案(1)|浏览(106)

我试图使用简单的ssh终端窗口在Google云上部署简单的FastAPI应用程序与Docker和Nginx代理。
我的nginx.conf:

access_log                  /var/log/nginx/app.log;
error_log                   /var/log/nginx/app.log;

proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 128;

proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Proxy "";

upstream app_server {
  server example.com:8000;
}

server {
  server_name               example.com;
  listen                    80;
  return 301 https://$host$request_uri;
}

server {
  listen                  443 ssl;
  server_name             example.com;
  ssl_certificate         /root/ssl/cert.pem;
  ssl_certificate_key     /root/ssl/key.pem;
  location / {
    proxy_pass "http://app_server";
  }
}

我的 Docker -组成。yml:

version: '3.8'

services:
  reverse-proxy:
    image: jwilder/nginx-proxy
    container_name: reverse-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx:/etc/nginx/conf.d
      - ./ssl/cert1.pem:/root/ssl/cert.pem
      - ./ssl/privkey1.pem:/root/ssl/key.pem
      - ./ssl/dhparam.pem:/etc/nginx/dhparam/dhparam.pem
    networks:
      - reverse-proxy

  web:
    environment: [.env]
    build: ./project
    ports:
      - 8000:8000
    command: gunicorn main:app -k uvicorn.workers.UvicornWorker -w 2 -b 0.0.0.0:8000
    volumes:
      - ./project:/usr/src/app
    networks:
      - reverse-proxy
      - back

networks:
  reverse-proxy:
    external:
      name: reverse-proxy
  back:
      driver: bridge

运行docker-compose up命令并转到 example.com 地址后,我收到错误:

  • 3上行超时(110:联机逾时)正在联机至上游...

此外,我已经使用Google Cloud Firewall服务打开了端口(使用 netstat 命令检查),并使用this article中的网络参数配置了我的VM示例。
我不明白为什么我收到504网关超时原因我的服务工作与类似的配置上一个简单的VPS主机,而且它的工作从内部谷歌云虚拟机的ssh终端时,使用 curl 和检查 localhost 而不是 example.com 域.我想知道如何运行我的服务在谷歌云虚拟机上只使用docker-compose实用程序为此目的?

mf98qq94

mf98qq941#

在Nginx配置文件中,尝试提及Web容器名称:

upstream app_server {
  server web:8000;
}

相关问题