系统优化
调整用户登录提示信息 /etc/motd
/etc/issue 和/etc/issue.net都是登陆系统前显示的欢迎信息
但是/etc/issue是本地终端登录时显示,而/etc/issue.net是远程登陆时显示的,且/etc/issue.net 不支持转义字符
yum install -y clamav clamav-data
clamscan -ri /oldboy/wordpress扫描病毒
freshclam更新病毒库
内核优化 | /proc/sys/ |
---|---|
net.ipv4.ip_forward = 1 | 是否开启内核转化 |
net.ipv4.icmp_echo_ignore_all=1 | 是否允许被ping |
net.ipv4.tcp_tw_recycle=1 | 是否开启tcp回收功能 |
net.ipv4.tcp_tw_reuse=1 | 是否开启tcp重复利用 |
vm.swapiness=0 | 设置 系统是否优先使用物理内存数值越小优先使用物理内存 |
nginx安全优化
- 修改nginx版本信息
./configure --prefix=/etc/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_dav_module
[root@cvm ~]# sed -n '13p;14p;22p' /app/nginx-1.16.1/src/core/nginx.h
#define NGINX_VERSION "1.16.1"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
[root@cvm ~]# sed -n '49p' /app/nginx-1.16.1/src/http/ngx_http_header_filter_module.c
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
[root@cvm ~]# sed -n '36p' /app/nginx-1.16.1/src/http/ngx_http_special_response.c
"<hr><center>nginx</center>" CRLF
server_tokens off;
- 优化nginx上传文件限制client_max_body_size 100m;
匹配上传文件目录的url,进行访问控制 - 防盗链
实现跨域访问
add_header Access-Control-Allow-Origin 网址
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;允许的操作
防止盗用静态资源
valid_referers none blocked server_names
if ($invalid_referer) {
return 403;
} - nginx目录设置 目录权限755 文件权限644
- robot协议
匹配http_user_agent - method请求方式限制
- 普通用户管理,修改为比1024大的端口
- 控制连接数和速率
- 禁止通过IP地址访问
- 配置错误页面
- https
nginx性能检测工具tsar
tsar --nginx -l -i 1 -s time,qps,active #i间隔时间l持续监控s选择的字段
#--cpu --men
#/etc/profile
export NGX_TSAR_HOST=172.16.1.xxx
export NGX_TSAR_PORT=8080
export NGX_TSAR_URI=/nginx_status
grep -n mod_nginx /etc/tsar/tsar.conf
34 mod_nginx on
- 修改进程数和cpu亲和
vim /etc/nginx/nginx.conf
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 35535; - 使用epoll模型
events {
use epoll; #限制每个进程能处理多少个连接请求,10240x16
worker_connections 10240; } - 优化单进程客户端连接数量
#限制每个进程能处理多少个连接请求,10240x16
worker_connections 10240; - 优化服务进程打开文件数
vim /etc/security/limits.conf文件描述符修改
root soft nofile 65535提醒
root hard nofile 65535限制
* soft nofile 25535文件数配置项 - 使用高效传输文件方式
静态文件读取高效
sendfile on;
提高网络传输效率
tcp_nopush on;在sendfile开启的情况下
提高网络传输的实时性
tcp_nodelay on;和nopush相反 - gzip压缩
gzip on;
gzip_min_length 1k; #设置大于1K才进行压缩
gzip_buffers 4 16k; #设置压缩缓存
#gzip_http_version 1.0;
gzip_comp_level 2; #压缩级别 数字越大 压缩率(占用空间)越小占用CPU越多
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php ;
#哪些类型的文件 需要进行压缩
- 浏览器缓存
add_header Cache-Control
no-cache:数据内容不被客户端缓存,每次请求都重新访问服务器,若有mac-age,则缓存期间不访问服务器
no-store:不仅不能缓存,连暂存也不可以(临时文件夹中不能暂存该资源)
private(默认):只能在浏览器中缓存,只有第一次请求的时候才访问服务器,若有max-age,则缓存期间不访问服务器
public:可以被任何缓存区缓存,如,浏览器,服务器,代理服务器等
max-age:相对过期试驾,即以秒为单位的缓存时间
no-cache,private:打开新窗口时候重新访问服务器,若设置max-age,则缓存期间不访问服务器
private,正数的max-age:后退的时候不会访问服务器
no-cache,正数的max-age:后退时候会访问服务器
点击刷新:无论如何都会访问服务器
Expires:
expires @15h30m;
设置以分钟为单位的绝对过期时间,优先级比Cache-Contro低,同时设置Expires和Cache-Control则后者生效;
- 代理缓存
[root@proxy /etc/nginx/conf.d]# vim proxy.conf
# level=1:2缓存的层次结构为2层
# keys_zone缓存空间名称为code_cache:10m,大小为10兆
# max_size=10g最大文件缓存为10G,超过10GNginx的裁判机制会剔除不经常被访问的缓存
# inactive=60m该缓存60分钟内没被访问就把清理掉
# use_temp_path=off会生成一个临时的.tmp缓存,会和自己定义的/soft/cache缓存冲突,导致性能下降,先关闭掉
proxy_cache_path /soft/cache level=1:2 keys_zone=code_cache:10m max_size=10g inactive=60m use_temp_path=off;
upstream cache {
server 192.168.1.17:8081;
server 192.168.1.17:8082;
server 192.168.1.17:8083;
}
if ($request_uri ~ ^/(url3|login|register|passwd)) {
set $cookie_nocache 1;
}这四个路径下的资源不缓存
server {
listen 80;
location / {
proxy_pass http://cache;
proxy_cache code_cache;
#proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
#proxy_no_cache $http_pargma $http_authorization;
# 状态码为200 304的缓存12小时
proxy_cache_valid 200 304 12h;
# 其余的缓存10分钟
proxy_cache_valid any 10m;
# response响应的头信息中定义缓存的状态(有没有命中)
add_header Nginx-Cache "$upstream_cache_status";
}
}
- 连接数量不多时开启会降低负载
Syntax: multi_accept on | off;
Default: multi_accept off;
Context: events