在使用 Docker Compose 和 Nginx 反向代理部署 Hugo 博客时,我遇到了路径重写问题。对 的请求IP/Hugo-Blog/X/Y/Z
被重定向到 ,IP/X/Y/Z
而不是保留/Hugo-Blog/
前缀,导致 404 错误。
但是,当我尝试直接访问IP/Hugo-Blog/X/Y/Z/
(带有尾部斜杠)时,它可以正常工作。
相同的 Hugo 结构在 的 GitHub Pages 上正常工作https://ri-nai.github.io/Hugo-Blog/
。
设置详细信息:
- 基础设施:腾讯云服务器(中国云平台)
- 技术栈: Docker Compose + Nginx 反向代理 + Hugo 静态站点
配置文件:
docker-compose.yaml
:
version: '3'
services:
homepage: # Homepage Site, works fine
...
blog:
build: ./Hugo-Blog
container_name: blog
expose:
- "80"
restart: always
reverse-proxy:
image: nginx:stable-alpine
container_name: reverse-proxy
volumes:
- ./nginx-proxy/default.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "80:80"
depends_on:
- homepage
- blog
restart: always
Hugo-Blog/Dockerfile
:
FROM hugomods/hugo:exts-0.128.0 AS builder
COPY . .
RUN hugo --minify --baseURL "https://ri-nai.github.io/Hugo-Blog/"
FROM nginx:stable-alpine
COPY --from=builder /src/public /usr/share/nginx/html
nginx-proxy/default.conf
:
server {
listen 80;
server_name IP;
location /Hugo-Blog/ {
proxy_pass http://blog:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
proxy_pass http://homepage:80/;
# ... same headers
}
}
尝试故障排除:
确认 Hugo 配置在 GitHub Pages 上正常运行
已验证 Docker 容器正在运行且可供内部访问
尝试并期待
请求
IP/Hugo-Blog/about
- 404 上
IP/Hugo-Blog/about
- 随后出现 404
IP/about
- 404 上
预期:行为匹配 GitHub Pages 的 301 → 200 重定向模式,同时保留
/Hugo-Blog/
前缀