生产环境:
操作系统:CentOS 6.8
Web服务软件:nginx-1.10.1
任务驱动:接到领导指示,要把14G左右大小的大学生创业序列视频发布到网上。
分析任务:考虑到此视频容量大,该格式不支持在线播放,又要有利用于学校师生方便获取视频资料,同时又要迎接上级检查。
解决方式:让师生下载视频到本地电脑观看学习。
效果:通过完成实战任务来消化1个月来学习nginx的知识。
有两种方案可供选择:
1. CentOS+Apache: 动态业务,可以选择Apache,建议选择nginx。
2. CentOS+nginx:静态业务,高并发场景,采用Nginx,既有静态业务又有动业务,也将采用Nginx,此项任务是静态业务,所以选择nginx。
操作步骤:
1. 在客户端先分别压缩各个视频,然后通过WinSCP上传到Linux服务器。
2. 安装nginx服务软件省略。
3. 主要是对nginx的基本安全优化,对参数优化提升服务性能,限制网站来源IP访问,错误页面的跳转,对站点目录及目录权限优化,控制并发连接数量,控制客户端请求的速率。
[root@sky9896 conf]# ca t nginx.conf
user nginx nginx; #更改默认用户
worker_processes 2; #因有2个CPU,所以配置2个进程数
worker_rlimit_nofile 65535; #进程最大打开文件数,该要放在主标签段
events {
use epoll; #事件处理模型优化
worker_connections 512; #单个客户进程允许的客户端连接数,因硬件配置太低,所以设置数字比较小;
}
http {
include mime.types;
default_type application/octet-stream;
charset utf-8; #解决网页乱码
server_tokens off; #关闭显示服务版本信息
tcp_nodelay on; #提高I/O性能
client_header_timeout 15; #客户端请求头数据的超时时间
client_body_timeout 15; #客户端请求主体的超时时间
send_timeout 25;
client_max_body_size 8m; #上传文件大限限制
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 logs/access.log main;
sendfile on; #开启文件的高效传输模式
tcp_nopush on; #防止网络和磁盘阻塞
keepalive_timeout 60; #设置连接超时
# include extra/nginx_vhosts.conf;
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:20m rate=1r/s; #控制客户端请求的nginx速率
server {
listen 9090; #采用9090端口,默认的是80端口
server_name 117.40.*.*:9090;
access_log /application/nginx/logs/www.access.log;
error_log /application/nginx/logs/www.error.log;
limit_conn addr 10; #限制单IP的并发连接数为10
limit_req zone=one burst=30; # 30个请求排队
location / {
root /application/nginx/html/www;
error_page 404 /404.html; #当出现404错误时,会跳转到404.html页面
error_page 404 http://117.*.*.*; #两种方式选择使用其中一种来解决实际问题
autoindex on; #开启显示目录功能
autoindex_exact_size off; #显示出文件的大概大小,单位是GB
autoindex_localtime on; #显示的文件时间为文件的服务器时间
deny 192.168.1.1; #只允许该IP访问
allow 192.168.1.0/24; #只允许该IP段访问
allow 192.168.0.0/16; #只允许该IP段访问
allow 117.40.*.*/24; #只允许该IP段访问
allow 182.99.242.*; #只允许该IP访问
deny all; #除了上面允许的,其他的都禁止。
}
}
}
[root@sky9896 html]# chmod 755 www #目录权限,保证不遭受******
[root@sky9896 www]# chmod 644 *.* #文件权限