【问题标题】:NGINX error when deploying static website with Concourse CI使用 Concourse CI 部署静态网站时出现 NGINX 错误
【发布时间】:2017-09-05 09:12:30
【问题描述】:

当我尝试使用 Concourse CI 将静态网站部署到 Pivotal Web 服务时遇到错误。我想使用 static_buildpack 推送一个静态网站。 index.html 放置在根文件夹中。当我使用 cf push 命令将代码从命令行直接推送到 Pivotal Web 服务时,一切正常。
当我使用大厅管道时,构建成功终止,但是在访问网站时出现错误。我在尝试访问网站时收到 nginx 403 Forbidden 错误。我使用以下管道尝试了以下清单(见下文)。使用 Concourse CI 时,容器创建成功,使用 buildpack,安装 nginx 并上传 droplet。应用程序本身已成功启动。
Cloud Foundry 日志显示以下错误:
2017/09/05 08:42:54 [error] 70#0: *3 directory index of "/home/vcap/app/public/" is forbidden, client: <ip>, server: localhost, request: "GET / HTTP/1.1", host: "agencydemo.cfapps.io"

manifest.yml

---
applications:
- name: agencyDemo
  memory: 64M
  buildpack: staticfile_buildpack
  host: agencyDemo

管道.yml

resources:
- name: app_sources
  type: git
  source:
    uri: https://github.com/smichard/CloudFoundryDemo
    branch: master

- name: staging_CloudFoundry
  type: cf
  source:
    api: {{pws_api}}
    username: {{pws_user}}
    password: {{pws_password}}
    organization: {{pws_org}}
    space: {{pws_space}}
    skip_cert_check: false

jobs:
- name: deploy-website
  public: true
  serial: true
  plan:
  - get: app_sources
    trigger: true
  - put: staging_CloudFoundry
    params:
        manifest: app_sources/manifest.yml

源代码可以在GitHub找到

【问题讨论】:

  • 我建议您在将应用实例部署到 PWS 上后将其 cf ssh 发送到您的应用实例并环顾四周。 a.) 确保您的文件已上传 b.) 它们位于预期的位置,即 public/ 目录和 c.) 验证已到位的 nginx 配置。看起来文件不存在或不在正确的路径中。 Nginx 说它不允许给你目录索引,我相信当没有 index.html 文件并且是预期的(默认禁用目录索引)时会发生这种情况。

标签: nginx cloud-foundry concourse


【解决方案1】:

nginx 403 Forbidden 主要发生在没有找到 index.html 时。建议的步骤

  1. 检查您的 buildpack(现在已在清单文件中更新为 buildpack)
  2. 检查命令或 dist 文件夹

cf push -p ./dist/ -f manifest-{your_envireonment}.yml --no-start(如果你的 index.html 直接在 dist 文件夹下)

cf push -p ./dist/{your_app_name} -f manifest-{your_envireonment}.yml --no-start(如果您的 index.html 在 dist/{your_app_name} 文件夹下)

【讨论】:

    【解决方案2】:

    您必须确保index.html 和其他角度静态文件直接存在于public/ 文件夹中,而不是类似public/your-app-name/ 之类的文件中

    【讨论】:

      【解决方案3】:

      另一种解决方案是修复manifest.yml 中的path-属性,如下所示:

      ---
      applications:
      - name: agencyDemo
        memory: 64M
        buildpack: staticfile_buildpack
        host: agencyDemo
        path: ./dist/your-app-name
      

      Docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        • 2016-02-15
        • 1970-01-01
        • 2014-03-20
        • 2016-09-07
        相关资源
        最近更新 更多