Nginx 是最风行的 Web 服务器,能够只占用 2.5 MB 的内存,却能够轻松解决 1w 的 http 申请。
做为网站的入口,Nginx 的平安设置重要性显而易见。
上面带你一起去认识一下这些平安配置吧!
nginx.conf 是 Nginx 最次要的配置文件,大部分的平安配置都在这个文件上进行。
禁用不须要的 Nginx 模块
主动装置的 Nginx 会内置很多模块,并不是所有的模块都须要,对于非必须的模块能够禁用,如 autoindex module,上面展现如何禁用
# ./configure --without-http_autoindex_module
# make
# make install
不展现 server tokens
默认状况下,Nginx 的 server tokens 会在谬误页面显示 Nginx 的版本号,这可能会导致信息泄露,未经受权的用户可能会理解你应用的 nginx 版本。应该在 nginx.conf 通过设置 server_tokens off 来禁用
管制资源和限度
为了避免对 Nginx 进行潜在的 DOS 攻打,能够为所有客户端设置缓冲区大小限度,配置如下:
- client_body_buffer_size 指定客户端申请主体缓冲区的大小。默认值为 8k 或 16k,但倡议将此值设置为低至 1k:client_body_buffer_size 1k
- client_header_buffer_size 为客户端申请标头指定标头缓冲区大小。设置为 1k 足以应酬大多数申请。
- client_max_body_size 为客户端申请指定可承受的最大注释大小。设置为 1k 应该足够了,然而如果通过 POST 办法接管文件上传,则须要减少它。
- large_client_header_buffers 指定用于读取大型客户端申请标头的缓冲区的最大数量和大小。将最大缓冲区数设置为 2,每个缓冲区的最大大小为 1k。该指令将承受 2 kB 数据,large_client_header_buffers 2 1k
禁用所有不须要的 HTTP 办法
禁用所有不须要的 HTTP 办法,上面设置意思是只容许 GET、HEAD、POST 办法,过滤掉 DELETE 和 TRACE 等办法。
location / {limit_except GET HEAD POST { deny all;}
}
另一种办法是在 server 块 设置,不过这样是全局设置的,要留神评估影响
if ($request_method !~ ^(GET|HEAD|POST)$ ) {return 444;}
监控拜访日志和谬误日志
继续监控和治理 Nginx 的谬误日志,就能更好的理解对 web 服务器的申请,留神到任何遇到的谬误,有助于发现任何攻打尝试,并确定您能够执行哪些操作来优化服务器性能。
能够应用日志管理工具(例如 logrotate)来旋转和压缩旧日志并开释磁盘空间。同样,ngx_http_stub_status_module 模块提供对根本状态信息的拜访。
合理配置响应头
为了进一步增强 Nginx web 的性能,能够增加几个不同的响应头,举荐
X-Frame-Options
能够应用 X-Frame-Options HTTP 响应头批示是否应容许浏览器在 <frame> 或 <iframe> 中出现页面。这样能够避免点击劫持攻打。
配置文件中增加:
add_header X-Frame-Options "SAMEORIGIN";
Strict-Transport-Security
HTTP Strict Transport Security,简称为 HSTS。它容许一个 HTTPS 网站,要求浏览器总是通过 HTTPS 来拜访它,同时会回绝来自 HTTP 的申请,操作如下:
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
CSP
Content Security Policy (CSP) 爱护你的网站防止被应用如 XSS,SQL 注入等伎俩进行攻打,操作如下:
add_header Content-Security-Policy "default-src'self'http: https: data: blob:'unsafe-inline'" always;
配置 SSL 和 cipher suites
Nginx 默认容许应用不平安的旧 SSL 协定,ssl_protocols TLSv1 TLSv1.1 TLSv1.2,倡议做如下批改:
ssl_protocols TLSv1.2 TLSv1.3;
此外要指定 cipher suites,能够确保在 TLSv1 握手时,应用服务端的配置项,以加强安全性。
ssl_prefer_server_ciphers on
定期更新服务器
旧版的 Nginx 总会存在各种各样的破绽,所以最好更新到最新版。
破绽能够去各大 CVE 网站去查问,Nginx 最新版则去官网查看。
起源:https://www.toutiao.com/i6901…