dokku 中不同位置的静态网站

问题描述 投票:0回答:1

我正在使用 dokku 和 docker 来运行我的静态网站。我想使用

nginx.conf
文件创建一些子目录和位置。这是我的文件结构

└── first
    ├── dist
    │   ├── index.html
    │   ├── page.html
    │   ├── ...
    ├── tools

└── second
    ├── dist
    │   ├── index.html
    │   ├── page.html
    │   ├── ...
    ├── tools

我希望我的网站像

example.com/first
那样加载
index.html
dist
文件夹中的
first
example.com/second
加载
index.html
dist
文件夹中的
second

所以我创建了一个像这样的

nginx.conf

location /first {
  alias /app/first/dist;
}

location /second {
  alias /app/second/dist;
}

但是我在尝试获取页面时收到 403 错误,当我转到

example.com/first/dist
时,第一个网站一切正常。如何配置我的
nginx.conf
文件?

docker nginx dokku
1个回答
0
投票

您面临的问题是 Docker 容器中的 Nginx 配置。默认的 Nginx 配置无法正确处理从子目录提供静态内容,这会导致 403 错误。

要解决此问题,您需要创建一个自定义 Nginx 配置文件,为您的子目录指定正确的位置块。

  1. 在项目目录中创建一个名为
    custom_nginx.conf
    的新文件,其中包含以下内容:
server {
    listen 80;
    
    location /first/ {
        alias /app/first/dist/;
        try_files $uri $uri/ /first/index.html;
    }

    location /second/ {
        alias /app/second/dist/;
        try_files $uri $uri/ /second/index.html;
    }
}
  1. 更新您的 Dockerfile 以复制此自定义配置并替换默认的 Nginx 配置:
FROM nginx:latest
WORKDIR /usr/share/nginx/html
COPY ./ .
COPY custom_nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
  1. 构建更新后的 Docker 映像并将其部署到您的 Dokku 服务器。

此自定义 Nginx 配置应正确提供

/first
/second
子目录中的静态内容,从而解决 403 错误。

© www.soinside.com 2019 - 2024. All rights reserved.