温馨提示×

Nginx SSL如何配置CSP

小樊
69
2025-08-12 12:18:55
栏目: 云计算

在Nginx中配置Content Security Policy (CSP) 可以提高网站的安全性,防止跨站脚本攻击(XSS)和其他代码注入攻击。CSP通过指定允许加载的资源来源来实现这一目的。以下是如何在Nginx中配置CSP的步骤:

  1. 编辑Nginx配置文件: 打开你的Nginx配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/yourdomain.com

  2. 添加CSP头: 在 serverlocation 块中添加 add_header 指令来设置CSP头。你可以根据需要自定义CSP策略。

    以下是一个基本的CSP配置示例:

    server {
        listen 443 ssl;
        server_name yourdomain.com;
    
        ssl_certificate /path/to/your/fullchain.pem;
        ssl_certificate_key /path/to/your/privkey.pem;
    
        location / {
            add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none';";
            # 其他配置...
        }
    }
    

    在这个示例中:

    • default-src 'self';:默认情况下,只允许从当前域加载资源。
    • script-src 'self' https://trustedscripts.example.com;:允许从当前域和 https://trustedscripts.example.com 加载脚本。
    • object-src 'none';:不允许加载任何插件(如 <object>, <embed>, <applet> 等)。
  3. 测试配置: 在重新加载Nginx之前,使用以下命令测试配置文件是否有语法错误:

    sudo nginx -t
    
  4. 重新加载Nginx: 如果配置文件没有问题,重新加载Nginx以应用更改:

    sudo systemctl reload nginx
    
  5. 验证CSP头: 使用浏览器开发者工具或在线工具(如 CSP Evaluator)来验证CSP头是否正确设置。

更复杂的CSP策略

你可以根据具体需求定制更复杂的CSP策略。例如:

  • 允许图片从特定域加载

    add_header Content-Security-Policy "default-src 'self'; img-src 'self' https://trustedimages.example.com;";
    
  • 允许字体从特定域加载

    add_header Content-Security-Policy "default-src 'self'; font-src 'self' https://trustedfonts.example.com;";
    
  • 允许样式表从特定域加载

    add_header Content-Security-Policy "default-src 'self'; style-src 'self' https://trustedstyles.example.com;";
    
  • 允许连接WebSocket

    add_header Content-Security-Policy "default-src 'self'; connect-src 'self' wss://trustedws.example.com;";
    

通过这些步骤,你可以在Nginx中配置CSP,从而提高网站的安全性。

0