使用nginx部署静态网站,如果使用css、JavaScript、图片等资源加载出错的常见原因有文件路径错误、权限问题、配置错误、浏览器缓存等,解决方案步骤如下!
先检查文件的路径,确保CSS、JS和图片在HTML文件中路径文件是正确的,当静态文件在/var/www/your_site/ 目录下,检查HTML文件引用的静态资源路径,如:
<link rel="stylesheet" href="/css/styles.css">
<script src="/js/scripts.js"></script>
<img src="/images/logo.png" alt="Logo">
确保/css/styles.css、/js/scripts.js 和 /images/logo.png 存在于服务器上并且路径正确。检查文件权限,确保nginx有访问静态文件的权限,可以使用以下命令进行设置适当的权限和所有权。
sudo chown -R www-data:www-data /var/www/your_site
sudo find /var/www/your_site -type d -exec chmod 755 {} \;
sudo find /var/www/your_site -type f -exec chmod 644 {} \;
其中www-data 是默认的 Nginx 用户。如果你使用其他用户,请相应地更改 www-data。
检查 Nginx配置是否正确指向静态目录,如:
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_site;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 处理静态文件
location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg)$ {
expires max;
log_not_found off;
}
}
其中,try_files $uri $uri/ =404; 确保 Nginx 尝试访问请求的文件,如果文件不存在,则返回 404 错误。
location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg)$ 处理静态文件的缓存,并将其与静态文件请求匹配。
可以清理浏览器的换成,有可能浏览器会缓存旧版本文件,导致新版本的文件不加载,可以清理浏览器换成和使用无痕浏览模式访问页面。
检查nginx的错误日志和访问日志,帮助找出问题所在,默认错误日志位置在/var/log/nginx/error.log,访问日志位于 /var/log/nginx/access.log。
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log
如果存在URL重写规则检查URL的重写规则,必须确保其不会干扰静态文件访问。如检查有无任何不必要重写规则会导致静态资源请求失败。
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_site;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 处理静态文件
location ~* \.(jpg|jpeg|gif|png|css|js|ico|svg)$ {
expires max;
log_not_found off;
}
# 处理反向代理(如果有)
location /api/ {
proxy_pass http://backend_server/;
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 部署后静态资源无法加载的问题。如果您使用中问题依然存在,可以提供更多具体的信息,华纳云技术支持会进一步帮助诊断。