gitea在docker的jwilder / nginx-proxy和jrcs / letsencrypt-nginx-proxy-companion之后

问题描述

我被困在使用jrcs / letsencrypt-Nginx-proxy-companion的反向代理jwilder / Nginx-proxy后面部署docker映像gitea / gitea:1进行自动证书更新。 gitea正在运行,我可以通过端口3000的http地址进行连接。 代理也正在运行,因为我有多个应用和服务,例如声纳波效果很好。

这是我的docker-compose.yml:

public List<YourObj> findByIsActionStatus(boolean actionStatus);

当我致电https://gitea.myhost.de时,结果是

502错误的网关(Nginx / 1.17.6)

这是日志条目:

version: "2"

services:
  server:
    image: gitea/gitea:1
    environment:
      - USER_UID=998
      - USER_GID=997
      - DB_TYPE=MysqL
      - DB_HOST=172.17.0.1:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=MysqLpassword
      - ROOT_URL=https://gitea.myhost.de
      - DOMAIN=gitea.myhost.de
      - VIRTUAL_HOST=gitea.myhost.de
      - LETSENCRYPT_HOST=gitea.myhost.de
      - [email protected]
    restart: always
    ports:
      - "3000:3000"
      - "222:22"
    expose:
      - "3000"
      - "22"
    networks:
      - frontproxy_default
    volumes:
      - /mnt/storagespace/gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
networks:
  frontproxy_default:
    external: true
  default:

这是Nginx / conf / default.conf中的相关条目:

2020/09/13 09:57:30 [error] 14323#14323: *15465 no live upstreams while connecting to upstream,client: 77.20.122.169,server: gitea.myhost.de,request: "GET / HTTP/2.0",upstream: "http://gitea.myhost.de/",host: "gitea.myhost.de"

也许是个问题,我按照https://docs.gitea.io/en-us/backup-and-restore/

的建议为此容器使用了gitea备份

我该怎么做才能使它运行?我已经读过这个https://docs.gitea.io/en-us/reverse-proxies/,但也许我错过了一些东西。重点是让letencrypt-Nginx-proxy-companion自动管理证书。

我们非常感谢您的帮助和提示

解决方法

我相信您所缺少的只是在gitea容器环境中的VIRTUAL_PORT设置。这告诉反向代理容器在路由来自VIRTUAL_HOST域的传入请求时与哪个端口连接,从而有效地将“:3000”行添加到nginx conf中的上游服务器。当您的容器都在同一主机上时,也是如此。默认情况下,反向代理容器仅侦听该服务上的端口80,但是由于gitea docker容器使用另一个默认端口3000,因此您需要将其本质上告知反向代理容器。参见下文,使用撰写文件中的代码段。

services:
  server:
    image: gitea/gitea:1
    environment:
      - USER_UID=998
      - USER_GID=997
      - DB_TYPE=mysql
      - DB_HOST=172.17.0.1:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=mysqlpassword
      - ROOT_URL=https://gitea.myhost.de
      - DOMAIN=gitea.myhost.de
      - VIRTUAL_HOST=gitea.myhost.de
      - VIRTUAL_PORT=3000 <-------------------***Add this line***
      - LETSENCRYPT_HOST=gitea.myhost.de
      - [email protected]
    restart: always
    ports:
      - "3000:3000"
      - "222:22"
    expose:
      - "3000"
      - "22"
    networks:
      - frontproxy_default
    volumes:
      - /mnt/storagespace/gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
networks:
  frontproxy_default:
    external: true
  default:

P.S .:如果所有容器都在同一主机上,则不需要公开端口,除了尝试使其工作之外,没有其他原因。