Nginx Dockerized e Gogs não servindo recursos (erro 404)

1

Eu configurei um servidor para servir um site a partir do URL padrão com um Nginx contêiner. Este site funciona completamente bem.

Em um suburl (/ gogs /) eu proxy todas as solicitações para uma instância do GOGS embora. Isso também é contêinerizado e os contêineres se comunicam por meio de uma rede do Docker personalizada.

Meu problema é que todos os ativos do GOGS não estão sendo carregados. Eu só recebo erros 404.

Isso é do log do nginx:

[error] 7#7: *38 open() "/website/gogs/js/libs/clipboard-1.5.9.min.js" failed (2: No such file or directory), client: $IP, server: website, request: "GET /gogs/js/libs/clipboard-1.5.9.min.js HTTP/2.0", host: "website"

/ website é um volume montado no contêiner Nginx.

Aqui está minha configuração para o proxy:

location /gogs/ {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  proxy_pass http://gogs:3000/;
}

A maior parte da configuração do Nginx é baseada no link .

Isso provavelmente seria um problema?

Como posso resolver os erros 404 que estou vendo?

EDITAR: logs / gogs.log

2017/07/03 04:33:10 [TRACE] Template: user/dashboard/dashboard

Os outros arquivos estão vazios e há um link simbólico quebrado na pasta:

lrwxrwxrwx 1 user user   14 Jul  2 21:08 log -> /data/gogs/log

Acho que isso está mal configurado na imagem do docker fornecida por gogs.

    
por b-m-f 02.07.2017 / 22:01

1 resposta

0

(Não há representante suficiente para comentar ...)

Parece que o seu nginx conteinerizado não veicula arquivos estáticos do Gogs. Qual imagem do Gogs você está usando? Como você inicia seus contêineres: docker run ? docker-compose ?

Pode também ser útil postar seus Dockerfiles ou docker-compose.yml e o nginx conf (pelo menos a seção server )

Ambos os containers nginx e gogs devem compartilhar o volume em que o Gogs armazena seu código, que eu presumo que esteja no diretório do site no host. (Digamos que ele esteja montado como /var/www/html dentro do contêiner). Com o Docker:

$ docker run -d -v /website:/var/www/html --name gogs gogs
$ docker run -d -v /website:/var/www/html --name nginx --link gogs nginx

E a configuração do seu servidor Nginx deve definir root /var/www/html para que ele possa encontrar arquivos estáticos:

server {
    root /var/www/html;
    location /gogs/ {
        (proxy_pass...)
    }
}
    
por 04.07.2017 / 11:33

Tags