我已经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 run ? docker-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...) } }