nginx优化

1144人浏览 / 0人评论

一、优雅报错

#如服务器返回如下错误状态码,则进行跳转,跳转至/404.html
error_page 404 403 /40x.html;
error_page 500 502 503 504 /50x.html;
#精准匹配访问
location = /404.html {
root /code;
}
location = /50x.html {
root /code;
}

 二、禁止ip访问

server {
listen 80;
server_name liangzeyu.com # 这里指定自己的域名
}
server{
listen 80 ;
server_name _; # 空主机头或IP
return 500; # 返回500错误
}
方法二
2.也可以将流量集中导入自己的网站,只要做以下跳转设置就可以
server { 
listen 80 ;
server_name _;
return 302 https://liangzeyu.com;
}

三、cpu亲和 

CPU亲和(affinity)减少进程之间不断频繁切换,减少性能损耗,其实现原理是将CPU核心和Nginx工作进程绑定方式,把每个worker进程固定对应的cpu上执行,减少切换cpu的cache miss,获得更好的 性能。 
 
worker_processes auto;

worker_cpu_affinity auto;

查看 

 ps -eo pid,args,psr|grep [n]ginx  

四、文件读取

文件读取高效

sendfile on;
提高网络传输效率,大文件推荐打开,需要开启sendfile才行。
tcp_nopush on;
提高网络传输实时性,需要开启keepalived。
tcp_nodelay on;

四、文件压缩

location ~* .*\.(jpg|gif|png)$ {
root /code/images;
gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/json application/x-javascript
application/css application/xml application/xml+rss text/javascript application/x-
httpd-php image/jpeg image/gif image/png;
}

 五、配置静态文件缓存

server {
listen 80;
server_name static.bgx.com;
location ~ .*\.(jpg|gif|png)$ {
root /code/images;
expires 7d;
}
}

六、防盗链

location ~ .*\.(jpg|gif|png)$ {
valid_referers none blocked www.liangzeyu.com;
if ($invalid_referer) {
return 403;
}
root /soft/code/images;
}

 测试盗链-----盗链失败

curl -e "http://www.baidu.com" -I http://192.168.69.113/test.jpg
测试盗链--盗链成功
curl -e "http://www.liangzeyu.com" -I http://192.168.69.113/test.jpg
 
 7、隐藏版本号 
se rver_tokens off;  
 
php版本隐藏
expose_php = Off

8、通用配 置文件 

[root@nginx ~]# cat nginx.conf
# nginx进程启动用户
user www;
# 启动work进程数
worker_processes auto;
worker_cpu_affinity auto;# 错误日志与pid
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;
#每个work能打开的文件描述符,调整至1w以上,负荷较高建议2-3w网上
worker_rlimit_nofile 35535;
events {
# 使用epoll高效网络模型
use epoll;
# 限制每个进程能处理多少个连接,10240x[cpu核心]
worker_connections 10240;
}
http {
# 发送给客户端头部Content-Type的类型
include mime.types;
default_type application/octet-stream;
# 统一使用utf-8字符集
charset utf-8;
# 定义日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 访问日志
access_log /var/log/nginx/access.log main;
# 禁止浏览器限制nginx版本号
server_tokens off;
# 文件高效传输,静态资源服务器建议打开
sendfile on;
tcp_nopush on;
# 文件实时传输,动态资源服务建议打开,需要打开keepalived
tcp_nodelay on;
keepalive_timeout 65;
# 文件上传大小限制调整
client_max_body_size 200m;
# Gzip 压缩
gzip on;
gzip_disable "MSIE [1-6]\.";
gzip_http_version 1.1;# 虚拟主机
include /etc/nginx/conf.d/*.conf;
}

 

全部评论