内容安全策略(CSP)是一种网络安全策略,它通过限制网页的HTTP头和脚本执行来防止恶意代码的传播。在Nginx中配置CSP可以增强网站的安全性。以下是一个简单的Nginx CSP配置示例:
1. 首先,创建一个名为`nginx.conf`的配置文件,并添加以下内容:
```
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name example.com;
# 设置CSP头部
add_header 'Content-Security-Policy' 'default-src *; script-src 'self'; style-src 'self' data:; connect-src 'self'; frame-src 'self' https://example.com; img-src 'self' data:; object-src 'none';';
location / {
root /var/www/html;
index index.html;
try_files $uri $uri/ =404;
}
}
}
```
这个配置将允许所有源(包括本地文件系统、本地网络、外部网络)的内容,以及图片和样式表。同时,它将阻止脚本和样式表从其他域加载,除非它们来自相同的域或具有相同的协议。
2. 保存配置文件后,运行以下命令使更改生效:
```
sudo nginx -t
sudo service nginx restart
```
3. 最后,确保CSP策略在所有页面上都生效。可以通过以下方式实现:
- 在HTML文件中,为所有需要加载的图片和样式表添加`src`属性,例如:
```html
```
- 在服务器端,使用`add_header`指令为所有请求设置CSP头部:
```javascript
app.use(function (req, res, next) {
res.set('Content-Security-Policy', 'default-src *; script-src 'self'; style-src 'self' data:; connect-src 'self'; frame-src 'self' https://example.com; img-src 'self' data:; object-src 'none';');
next();
});
```
这样,当用户访问网站时,他们将收到一个包含CSP头部的响应,从而保护网站不受跨站脚本攻击和其他潜在的安全问题的影响。