Docker化的Nginx和Gogs没有提供资源(404错误)

我已经build立了一个服务器,通过一个集装箱式的Nginx,从标准的URL提供一个网站。 这个网站工作得很好。

在郊区(/ gogs /),我将所有的请求都委托给了GOGS的一个实例。 这也是容器化的,容器通过定制的Dockernetworking进行通信。

我的问题是,所有来自GOGS的资产都没有被加载。 我只得到404错误。

这是来自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" 

/网站是安装在Nginx容器中的卷。

这是我的代理configuration:

 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/; } 

我的大部分Nginxconfiguration都基于https://github.com/h5bp/server-configs-nginx 。

这可能是一个问题吗?

我如何解决我所看到的404错误?

编辑: 日志/ gogs.log

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

其他文件是空的,在文件夹中有一个错误的符号链接:

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

我猜这是由gogs提供的docker镜像中的错误configuration。

(没有足够的代表评论…)

看起来像你的集装箱nginx不提供Gogs的静态文件。 你使用的是什么Gogs图像? 你如何开始你的容器: docker rundocker-compose

可能也会有助于发布您的Dockerfiles或docker-compose.yml和nginx conf(至less是server部分)

容器nginx和gogs应该共享Gogs存储代码的容量,我假设它在主机的网站目录中。 (假设它在容器中被挂载为/var/www/html )。 使用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 

而你的Nginx服务器configuration应该设置root /var/www/html以便它可以find静态文件:

 server { root /var/www/html; location /gogs/ { (proxy_pass...) } }