我正在使用 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 配置。默认的 Nginx 配置无法正确处理从子目录提供静态内容,这会导致 403 错误。
要解决此问题,您需要创建一个自定义 Nginx 配置文件,为您的子目录指定正确的位置块。
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;
}
}
FROM nginx:latest
WORKDIR /usr/share/nginx/html
COPY ./ .
COPY custom_nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
此自定义 Nginx 配置应正确提供
/first
和 /second
子目录中的静态内容,从而解决 403 错误。