首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从主机提供静态文件的CapRover

从主机提供静态文件的CapRover
EN

Stack Overflow用户
提问于 2021-10-03 14:13:46
回答 1查看 629关注 0票数 0

我希望使用CapRover提供位于主机服务器上的静态文件。

我所做的:

创建的目录结构/srv/foo/bar.

  • Ensured bar权限是drw-rw-r--,其中的所有文件都是CapRover仪表板中的-rw-r--r--.

  • Created新应用程序,名为app.

  • Modified its Nginx配置(向下滚动查看我的更改):

代码语言:javascript
复制
<%
if (s.forceSsl) {
%>
    server {
        listen       80;
        server_name  <%-s.publicDomain%>;

        # Used by Lets Encrypt
        location /.well-known/acme-challenge/ {
            root <%-s.staticWebRoot%>;
        }

        # Used by CapRover for health check
        location /.well-known/captain-identifier {
            root <%-s.staticWebRoot%>;
        }

        location / {
            return 302 https://$http_host$request_uri;
        }
    }
<%
}
%>

server {
    <%
    if (!s.forceSsl) {
    %>
        listen       80;
    <%
    }
    if (s.hasSsl) {
    %>
        listen              443 ssl http2;
        ssl_certificate     <%-s.crtPath%>;
        ssl_certificate_key <%-s.keyPath%>;
    <%
    }
    %>

        client_max_body_size 500m;
        server_name  <%-s.publicDomain%>;

        # 127.0.0.11 is DNS set up by Docker, see:
        # https://docs.docker.com/engine/userguide/networking/configure-dns/
        # https://github.com/moby/moby/issues/20026
        resolver 127.0.0.11 valid=10s;
        # IMPORTANT!! If you are here from an old thread to set a custom port, you do not need to modify this port manually here!!
        # Simply change the Container HTTP Port from the dashboard HTTP panel
        set $upstream http://<%-s.localDomain%>:<%-s.containerHttpPort%>;

        # THIS IS WHAT I CHANGED
        location / {
            root /srv/foo/bar;
        }

        # Used by Lets Encrypt
        location /.well-known/acme-challenge/ {
            root <%-s.staticWebRoot%>;
        }
        
        # Used by CapRover for health check
        location /.well-known/captain-identifier {
            root <%-s.staticWebRoot%>;
        }

        error_page 502 /captain_502_custom_error_page.html;
        location = /captain_502_custom_error_page.html {
                root <%-s.customErrorPagesDirectory%>;
                internal;
        }
}

  1. I甚至为应用程序设置了持久目录映射( /srv/foo to
  2. )

但是当我在浏览器中打开https://app.caprover.mydomain.com/test.jpg时:

代码语言:javascript
复制
404 Not Found
nginx

因此,我查看了Nginx (docker service logs captain-nginx --follow):

代码语言:javascript
复制
... *4773 open() "/srv/foo/bar/test.jpg" failed (2: No such file or directory), client: 1.2.3.4, server: app.caprover.mydomain.com, request: "GET /test.jpg HTTP/1.1", host: "app.caprover.mydomain.com"
... "app.caprover.mydomain.com" "GET /test.jpg HTTP/1.1" 404 548 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" "-"

我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-01-27 15:40:09

Nginx正在容器内部查找到/srv/foo/bar的路径--您已经在caprover nginx容器之外创建了目录,然后必须将它映射到容器中,以使nginx能够访问它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69425654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档