安装ERPNext后访问自定义域名出现404页面无法访问,该如何解决?
根据安装方式(Bench/Docker),分别按以下步骤排查:
一、Bench 安装环境排查
验证站点域名配置
进入bench目录,执行bench show-config查看当前站点的域名设置,确认自定义域名已在sites/{你的站点名}/site_config.json的domains数组中:{ "domains": ["your-custom-domain.com"], // 其他配置项 }若未添加,执行
bench add-domain your-custom-domain.com --site {你的站点名},之后重启bench服务:bench restart检查Nginx站点配置
Bench自动生成的Nginx配置文件位于/etc/nginx/sites-available/{你的站点名},打开后确认server_name字段包含你的自定义域名:server_name your-custom-domain.com;修改后执行
sudo nginx -t校验配置合法性,无问题则重启Nginx:sudo systemctl restart nginx确认域名解析生效
用ping your-custom-domain.com或nslookup your-custom-domain.com检查域名是否指向服务器IP,刷新本地DNS缓存:Windows执行ipconfig /flushdns,Linux执行sudo systemd-resolve --flush-caches检查Bench服务状态
执行bench status确认frappe-web、socketio、redis等服务均处于running状态,异常服务可单独重启,比如bench restart frappe-web
二、Docker 安装环境排查
检查容器配置与端口映射
查看docker-compose.yml中erpnext服务的环境变量SITE_NAME是否设为自定义域名,同时确认80/443端口已正确映射到宿主机:services: erpnext: environment: - SITE_NAME=your-custom-domain.com ports: - "80:80" - "443:443"修改后重启容器:
docker-compose down && docker-compose up -d验证反向代理配置(若使用)
若用外部Nginx/Caddy做反向代理,确保配置中proxy_pass指向容器端口(如http://localhost:80),server_name设为自定义域名,且添加必要请求头:server { listen 80; server_name your-custom-domain.com; location / { proxy_pass http://localhost:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }校验并重启Nginx:
sudo nginx -t && sudo systemctl restart nginx检查容器内站点配置
进入ERPNext容器:docker exec -it {容器名} bash,查看/home/frappe/frappe-bench/sites/{你的站点名}/site_config.json的domains字段,缺失则添加后重启容器。
三、通用排查要点
- 清除浏览器缓存
用Ctrl+F5强制刷新页面,或用隐私模式访问,避免旧缓存导致的404。 - 检查防火墙与安全组
确认服务器防火墙(ufw/iptables)和云服务商安全组已开放80、443端口,防止端口被拦截。 - HTTPS证书校验
若配置了SSL证书,确认证书有效且Nginx配置正确指向证书文件,证书问题可能导致HTTPS访问跳转404。 - 确认站点安装完成
Bench环境执行bench list查看站点状态,Docker环境查看容器日志docker logs {容器名},确保站点初始化无报错。
内容的提问来源于stack exchange,提问作者Zenul_Abidin

