Nginx子域名访问静态资源返回404问题求助
问题
主域名部署的NuxtJS运行正常,但子域名托管静态资源(图片)时持续返回404错误,已创建符号链接,附相关Nginx配置如下:
子域名配置文件:/etc/nginx/sites-enabled/dev.venegrad.com
server { listen 80; server_name dev.venegrad.com www.dev.venegrad.com; root /root/dev.venegrad.com; index index.html; autoindex on; location / { } }
主域名配置文件:/etc/nginx/sites-enabled/venegrad.com
server { server_name venegrad.com www.venegrad.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } listen [::]:443 ssl; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/venegrad.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/venegrad.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = www.venegrad.com) { return 301 https://$host$request_uri; } # managed by Certbot if ($host = venegrad.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name venegrad.com www.venegrad.com; #return 404; # managed by Certbot }
排查建议
- 路径与权限检查
- 确认
/root/dev.venegrad.com目录存在,目标图片文件或符号链接指向的文件确实在该路径下 - 检查Nginx运行用户(一般是
www-data)是否拥有该目录及文件的读取权限,/root目录默认权限严格,大概率会导致Nginx无法访问,建议将静态资源迁移到/var/www这类常规web目录
- 确认
- 符号链接验证
- 执行
ls -l /root/dev.venegrad.com查看符号链接的指向是否正确,目标路径的文件是否存在且权限正常
- 执行
- Nginx配置校验
- 子域名仅监听80端口,若用户用HTTPS访问会出现错误,需为子域名添加SSL配置(可参考主域名的Certbot生成流程)
- 执行
nginx -t检查配置语法是否正确,无报错则重启Nginx:systemctl restart nginx - 确认子域名的DNS解析已正确指向服务器IP
- 请求路径匹配
- 若图片放在子目录,比如
/images,需确保访问URL(如dev.venegrad.com/images/photo.jpg)对应的实际路径/root/dev.venegrad.com/images/photo.jpg存在
- 若图片放在子目录,比如
内容的提问来源于stack exchange,提问作者Eugeny
相关产品推荐
相关产品推荐

