一 运行身份与最小权限原则
二 目录与文件权限模板
静态站点目录(示例:/var/www/html)
需要写入的目录(如 Laravel 的 storage、bootstrap/cache)
上传目录(如 /var/www/html/uploads)
快速示例命令
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} +
sudo find /var/www/html -type f -exec chmod 644 {} +
sudo chown -R www-data:www-data /var/www/your-laravel-app
sudo find /var/www/your-laravel-app -type d -exec chmod 755 {} +
sudo find /var/www/your-laravel-app -type f -exec chmod 644 {} +
sudo chmod -R 775 /var/www/your-laravel-app/storage /var/www/your-laravel-app/bootstrap/cache
sudo chown -R deploy:www-data /var/www/html/uploads
sudo chmod -R 775 /var/www/html/uploads
sudo find /var/www/html/uploads -type f -exec chmod 664 {} +
上述所有权与权限设置可确保 Nginx 正常读取静态资源,同时仅对需要写入的目录开放写权限,降低被上传脚本执行的风险。
三 日志与缓存目录权限
sudo chown -R www-data:adm /var/log/nginx
sudo chmod -R 750 /var/log/nginx
sudo chown -R www-data:www-data /var/cache/nginx
sudo chmod -R 750 /var/cache/nginx
四 访问控制与执行限制
server {
listen 80;
server_name example.com;
location / {
allow 192.168.1.0/24;
deny all;
root /var/www/html;
index index.html;
}
}
sudo apt install apache2-utils # 提供 htpasswd
sudo htpasswd -c /etc/nginx/.htpasswd alice
server {
location /admin/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
root /var/www/html;
}
}
location /uploads/ {
location ~ \.(php|php5|phtml)$ {
deny all;
}
}
add_header X-Frame-Options "DENY" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
server_tokens off; # 隐藏版本号
以上措施可结合使用,以“最小暴露面”为目标进行分层防护。五 快速排错清单