本文共 18561 字,大约阅读时间需要 61 分钟。
轻量级、高性能的HTTP服务器和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器
web服务器对比
Unix和Linux平台 | Windows平台 |
--Apache、Nginx、Tengine、Lighttpd --Tomcat、IBM WebSphere、Jboss | 微软公司的IIS(Internet Information Server) |
官网
gcc pcre-devel openssl-devel //安装依赖包
useradd -s /sbin/nologin nginx #与配置中的user不同则重启服务报错 #如果与 tar -xf nginx-1.10.3.tar.gz cd nginx-1.10.3 ./configure \ #当前位置进行配置 > --prefix=/usr/local/nginx \ //指定安装路径 > --user=nginx \ //指定用户 > --group=nginx \ //指定组 > --with-http_ssl_module //开启SSL加密功能 make && make install //编译并安装/usr/local/nginx/sbin/nginx //启动服务
/usr/local/nginx/sbin/nginx -s stop //关闭服务 /usr/local/nginx/sbin/nginx -s reload //不重启的情况下重新加载配置文件 /usr/local/nginx/sbin/nginx -V //查看软件信息 ln -s /usr/local/nginx/sbin/nginx /sbin/ //方便后期使用,软连接快捷方式netstat
-a显示所有端口的信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)
netstat -nualtp | grep nginx
ps aux | grep nginx src目录下的 .c结尾(c语言)功能划分 make 源玛编译为二进制 通过./configure --help 查看该软件支持的模块
]# firewall-cmd --set-default-zone=trusted
]# setenforce 0
测试首页文件
]# curl http://<server_IP>
[root@proxy ~]# tar -zxvf nginx-1.12.2.tar.gz#解新版本包
[root@proxy ~]# cd nginx-1.12.2 #进入改目录 [root@proxy nginx-1.12.2]# ./configure \ #当前目录下配置 > --prefix=/usr/local/nginx \ #安装路径不写默认在/usr/local/nginx > --user=nginx \ #指定用户 > --group=nginx \ #指定组 > --with-http_ssl_module #开启SSL加密功能 [root@proxy nginx-1.12.2]# make #升级不用再进行安装curl http://192.168.4.5和火狐验证效果差不多
[root@proxy nginx-1.12.2]# mv /usr/local/nginx/sbin/nginx \ >/usr/local/nginx/sbin/nginxold #备份老程序 [root@proxy nginx-1.12.2]# cp objs/nginx /usr/local/nginx/sbin/ #拷贝新版本 [root@proxy nginx-1.12.2]# make upgrade /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` sleep 1 test -f /usr/local/nginx/logs/nginx.pid.oldbin make: *** [upgrade] 错误 1>>kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`[root@proxy ~]# /usr/local/nginx/sbin/nginx –v //查看版本
----------------------------------------------------------------------------------
vim /usr/local/nginx/conf/nginx.conf(nginx配置文件)
全局配置
(用户名,日志,进程)http{
server{ listen 80; #端口 server_name localhost; #域名auth_basic"认证提示符仅英文";
auth_basic_user_file "/usr/local/nginx/pass"; #认证密码文件root html; #网站根路径(默认在安装位置)
} server{ listen 80; server_name www.xyz.com; root www; } } httpd-tools软件包 htpasswd -c /usr/local/nginx/pass(新密码文件)用户名 # -c创建密码文件第一次使用,继续添加(追加)无需此选项。后面接密码文件路径+用户名,回车后输入密码,自动写入密码到文件htpasswd -c /usr/local/nginx/pass tom
前面已建快捷方式则直接nginx -s reload重新加载 ---------------------------------------------------------------基于域名的虚拟主机
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. .. server { listen 80; //端口 server_name www.a.com; //域名 auth_basic "Input Password:"; //认证提示符 auth_basic_user_file "/usr/local/nginx/pass"; //认证密码文件 location / { root html; //指定网站根路径 index index.html index.htm; } } … … server listen 80; //端口 server_name www.b.com; //域名 location / { root www; //指定网站根路径 index index.html index.htm; } } |
再建网站根路径mkdir /usr/local/nginx/www
echo "www" > /usr/local/nginx/www/index.html nginx -s reload 客户端测试 修改客户端主机192.168.4.10的/etc/hosts文件,进行域名解析 vim /etc/hosts 192.168.4.5 www.a.com www.b.com
AES、 DES 应用案例:RAR,ZIP压缩加密(单机加密)
RSA、 DSA 应用案例:网络加密(https,ssh)
MD5, SHA256, SHA 512 应用案例:数据完整性校验,文件秒传
]# md5sum anaconda-ks.cfg
81a24d454319c2a5b8b806828e370367 anaconda-ks.cfg md5值与时间,名字,权限无关,与内容有关RS ORS
FS OFS awk 'BEGIN{FS="--";OFS="***"}{print $1,$2,$3}' 1.txtawk -F: -v x=$i'$1==$x{print $1“-->”$2}' /etc/passwd
-v(引入外部变量)/var/spool/cron/root(谁的任务就谁的文件名)计划任务路径
#!/bin/bash
while : do u=`awk '/Failed/{ip[$11]++}END{for(i in ip){print i","ip[i]}}' /var/log/secure` for i in $u do n=`echo $i | awk -F, '{print $1}'` c=`echo $i | awk -F, '{print $2}'` if [$c -gt 3];then firiewall-cmd --zone=block --list -all | grep -q $n [ $? -eq 0 ];then || firewall-cmd --zone=blcok --add -source=$n fidone
sleep 5 done 1.基于端口的虚拟主机(参考模板) server { listen 8080; //端口 server_name web1.example.com; //域名 ...... } server { listen 8000; //端口 server_name web1.example.com; //域名 ....... } 2.基于IP的虚拟主机(参考模板) server { listen 192.168.0.1:80; //IP地址与端口 server_name web1.example.com; //域名 ... ... } server { listen 192.168.0.2:80; //IP地址与端口 server_name web1.example.com; ... ... } |
1.
[root@proxy ~]# cd /usr/local/nginx/conf [root@proxy ~]# openssl genr > cert.key //生成私钥 [root@proxy ~]# openssl req -new -x509 -key cert.key > cert.pem req请求做一个证书 -new新的 导出证书是x509格式 -key与私钥一致 (公钥) >>>>输入证书信息 国家名称(2个字母代码): 省/市/自治区名称(全名): 地名(如城市)【默认城市】: 组织名称(如公司)【默认公司】: 组织单位名称(例如,部门): 公用名(例如,您的名称或服务器的主机名): 电子邮箱:2.vim /usr/local/nginx/conf/nginx.conf
… … server { listen 443 ssl; server_name www.c.com; ssl_certificate cert.pem; #这里是证书文件 ssl_certificate_key cert.key; #这里是私钥文件 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; #超时时间(愿意等待多久) ssl_ciphers HIGH:!aNULL:!MD5; #!不能空密钥,不能md5加密 ssl_prefer_server_ciphers on; 以下为加密的网页 location / { root html; #根路径 index index.html index.htm; } } |
-----------------------------------------------------------------------------------------------------
动态网站页面:php,py,jsp(java),perl,bash
/脚本属于动态(nginx将脚本给php[9000.多进程]执行完把结果给用户) 静态网站页面:jpg,mp4,doc,pdf,html...(扩展名)要啥直接给啥安装以下软件依赖包:
mariadb(数据库客户端软件)、 #端口:3306 mariadb-server(数据库服务器软件)、 mariadb-devel(其他客户端软件的依赖包)、 php(核心的解释器)、 php-fpm(进程管理器服务)、systemctl start php-fpm #端口9000 php-mysql(PHP的数据库扩展包),扩展模块 mysql,oracle,sqlserver, php多进程(取决于配置文件) 以内存容量情况来起进程 空间进程(提前启的进程) 重启并开机自启服务!!!!php脚本
vim /usr/local/nginx/html/test.php <?php $i=33; echo $i; ?>php 脚本名 #运行php脚本
查看即可不需修改
[root@proxy etc]# vim /etc/php-fpm.d/www.conf [www] listen = 127.0.0.1:9000 //PHP端口号 pm.max_children = 32 //最大进程数量 pm.start_servers = 15 //最小进程数量 pm.min_spare_servers = 5 //最少需要几个空闲着的进程 pm.max_spare_servers = 32 //最多允许几个进程处于空闲状态-----------------------------------------------------------------------------
程序(program) 进程(process) 线程(thread) 1程序(硬盘上)----> 4进程(内存)-------->4线程(节约资源,进程死了线程全死) 动静分离 location匹配用户的地址栏,支持正则 从域名开始往后匹配www.a.com/... 精确匹配不加正则 正则匹配加~号例location ~/teat. / 的优先级低 例:server { listen 80; server_name www.a.com; location / { #每个location相当于一个if allow 192.168.1.1; #只能被此ip访问 deny all; #其他ip拒绝 root html; } location ~\.php${ #\转义.变为普通符,~为模糊匹配 root html; } } |
动静分离vim /usr/local/nginx/conf/nginx.conf
静态 locatio / { #匹配地址栏 域名/ root html; index index.php index.html index.htm; 默认首页,默认第一个 }动态 location ~\.php${ #匹配地址栏 域名/后的.php结尾(会找相应的地址文件) root html; #网页文件路径 fastcgi_pass 127.0.0.1:9000; #讲请求转发给本机9000端口,PHP解释器 fatcgi_index index.php; #fastcgi_param SCRIPT_FILENAME $document_roo$fastcgi_script_name; include fastcgi.conf; #nginx调用conf文件(里面是内置变量) }[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下: #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)出错了参考日志
/usr/local/nginx/logs/error.log /var/log/php-fmp/www-error.log Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log connection refused连接被拒绝 UV(几个ip) PV(多少访问量) wc -l access.log/etc/profile[定义变量]
创建PHP测试页面,连接并查询MariaDB数据库。
mysql(密码默认写在日志里) mariadb(默认无密码)vim /usr/local/nginx/html/mysql.php
<?php $mysqli = new mysqli('localhost(解析为127.0.0.1)','root','密码','mysql'); //注意:root为mysql账户名称,密码需要修改为实际mysql密码,无密码则留空即可 //localhost是数据库的域名或IP,mysql是数据库的名称 if (mysqli_connect_errno()){ die('Unable to connect!'). mysqli_connect_error(); } $sql = "select * from user"; $result = $mysqli->query($sql); while($row = $result->fetch_array()){ printf("Host:%s",$row[0]); printf("</br>"); printf("Name:%s",$row[1]); printf("</br>"); ?>1.安装LNMP (user ---nginx ---php---mysql)
2.修改nginx.conf[动静分离] nginx --- PHP 3.编写PHP脚本连接数据库(实现读写操作) http://www.a.com/mysql.phlp 数据库永久存储PHP的变量 /etc/hosts/ 只为本机解析 -----------------------------------------------------------------------------------------------------地址栏http://wwww.a.com/........
rewrite regex replacement flag
rewrite 旧地址(支持正则表达式) 新地址 [选项] rewite 跳转/保留 [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. server { listen 80; server_name localhost;rewrite /a.html /b.html redirect(地址栏跳转变化); #地址重定向到b.txt
location / {
root html; index index.html index.htm; } }a.html和b.html本身没有需自建,访问/a.html自动调转到b.html.则a.html建不建看你喜欢,b.html需创建到根路径下(/usr/local/nginx/html/b.html)
重启后验证nginx -s reload
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. server { listen 80; server_name localhost; rewrite ^/ htpp://tmooc.com redirect; location / { root html; index index.html index.htm; } } server { listen 80; server_name localhost; rewrite ^/ htpp://tmooc.com redirect; #或 rewrite ^/(.*) htpp://tmooc.com/$1; #()复制以/开头后面的所有内容到后面以$1占帖 location / { root html; index index.html index.htm; } } --------------------------------------------------------------------------nginx 正则
基本正则 \{n,m\} \()优先学会 扩展正则 {} () perl正则 \b \w \d \s () ()--> $1 $2 与扩展正则()不一样,扩展正则以\1\2占帖 posix正则 [[:alpha:]] 所有字符 [[:num:]] 所有数字 ie(pc端浏览器) http://www.sina.com.cn(宽屏页面) uc(手机浏览器) http://www.sina.com.cn(窄屏页面) 前端(网页美观)html,div,javascript(不是java) 后端(技术) php,java,python,perlrequest 请求
referer 从哪里来 $http_user_agent的值 用户信息(用户代理) "Mozilla(浏览器)/5.0 (X11; Linux(操作系统) x86_64; rv:52.0) Gecko/20100101 Firefox/52.0(浏览器/版本)"tailf /usr/local/nginx/logs/access.log #tailf 实时查看内容变化
192.168.4.10(对方ip) - tom(用户名) [18/Apr/2019:10:36:40 +0800] (时间,+0800东八区)"GET /(默认首页)favicon.ico(根页面下的) HTTP/1.1(协议)" 404(状态) 169 (页面有多大/字节)"-"(从哪里访问来的-为直接输地址栏搜) "Mozilla/5.0 (X11; Linux x86_64(操作系统); rv:52.0) Gecko/20100101 Firefox/52.0(浏览器/版本)"
~符号代表正则匹配,*符号代表不区分大小写实现curl和火狐访问相同链接返回的页面不同)
[root@proxy ~]# echo "I am Normal page" > /usr/local/nginx/html/test.html [root@proxy ~]# mkdir /usr/local/nginx/html/firefox/ [root@proxy ~]# echo "firefox page" > /usr/local/nginx/html/firefox/test.html 修改配置 server ...if ($http_user_agent ~* firefox) { #如果用的是火狐则跳转页面到以下页面,客户端信息 rewrite ^/(.*) /firefox/$1;#不管访问什么页面都给你跳到相同页面 } ... #或特殊情况rewrite / /test.html rewrite /(.*) /firefox/$1 |
如果访问域名后面不加test.html则自动跳到改页面,如果是火狐自动跳到firefox/test.html,不是则不跳
重新加载后验证。 firefox http://192.168.4.5/test.html curl http://192.168.4.5/test.html *****地址重写格式【总结】 rewrite 旧地址 新地址 [选项]; 选项:一、Nginx(web服务器)反向代理服务器
Nginx 功能1)部署web服务器
两台虚拟机安装http并写网页文件index.html 2)修改配置文件 Vim /local/nginx/conf/nginx.conf ... http{ .... #添加服务器池,实现反向代理功能Upstream webserver{ #使用upstream定义后端服务器集群(上游集群),集群名称任意ip_hash;(server上面) #配置upstream服务器集群的调度算法,通过ip_hash设置调度规则为相同客户端访问相同服务器 把客户端ip地址 hash一下Server 192.168.2.100:80(默认80可以不写) weight=1 max_fails=1 fail_timeout=20; #使用server定义集群中的服务器和端口;配置upstream服务器集群池属性:weight设置服务器权重值默认值1。 Max_fails设置最大失败次数(测1次失败判为坏的);fail_timeout设置失败超时时间,单位秒(隔20秒再测)健康检查Server 192.168.2.200;#server 192.168.2.101 down; down标记服务器已关机,不参与集群调度 } ...Server { ......location / { root html; #(优先级低)Proxy_pass http://webserver; #通过proxy_pass将用户的请求转发给webserver集群(pass自己不处理丢给集群) } } ==================================================== /usr/local/nginx/sbin/nginx -s reload #重新加载 Curl http://192.168.4.5 #多次访问查看效果ip_hash
详情http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash 算法:echo “192.168.4.5” | md5sum (16进制数0-9|a-f)%2(2台服务器)=0|1 数据不变hash值不变,通过值判断(一直)给哪个服务器 hash只看客户端IPv4地址的前三个八位字节或整个IPv6地址用作散列密钥 11 二进制 = 十进制3 11 七进制 = 十进制 8 11 60进制 = 十进制 61 11 365进制 = 十进制 366User--->proxy------|--------web1
(轮询 )代理 | ----------------web2 | --------ftp1 | --------ftp2轮询:轮着转给服务器,如果要认证刷新又要输入密码
相同:相同客户端访问相同服务器 Nginx用什么就加什么模块 1.9版本前不支持--with-stream模块二、Nginx的TCP/UDP调度器(其他代理)
1.部署支持4层TCP/UDP代理的Nginx服务器 重装软件或升级 yum –y install gcc pcre-devel openssl-devel //安装依赖包 [root@proxy ~]# tar -xf nginx-1.12.2.tar.gz [root@proxy ~]# cd nginx-1.12.2 [root@proxy nginx-1.12.2]# ./configure \ > --with-http_ssl_module //开启SSL加密功能 > --with-stream //开启4层反向代理功能[root@proxy nginx-1.12.2]# make && make install //编译并安装
修改/usr/local/nginx/conf/nginx.conf配置文件,添加服务器池,实现TCP/UDP反向代理功能 在http上面新增: stream { upsteam nsd { server 192.168.2.100:22;(这里端口不是默认,ssh=22) server 192.168.2.200:22; } server { listen 12345; #65535内的与其他端口不冲突的随随便一个,本机22端口已占用 这里不需加server_name proxy_pass nsd; #本次不是做网页代理,}
} http { ....... 重新加载后验证ssh 192.168.4.5 -p 12345 #(-p端口,不加默认为22就直接默认连代理了) Password:which nginx
在环境变量$PATH设置的目录里查找符合条件的文件。 Hash显示哈希表 -l 显示哈希表,包括路径 -r 清除哈希表 -p <path> <name> 向哈希表中增加内容 -t <command> 显示指定命令的完整路径---------------------------------------------------------------------------、
三、自定义报错 200 一切正常 301 永久重定向 302 临时重定向 401用户名或密码错误 403禁止访问(客户端ip地址被拒绝) 404 文件不存在 414 请求URI头部过长 500 服务器内部错误 502 Bad Gateway firefox http://192.168.4.5/xxxxx #访问一个不存在的页面 [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf .. .. error_page 404 /40x.html; //自定义错误页面 .. .. [root@proxy ~]# vim /usr/local/nginx/html/40x.html //生成错误页面 Oops,No NO no page … ----------------------------------------------------------------------------------------------------- 四、如何查看服务器状态信息(非常重要的功能) -with-http_stub_status_module开启状态页面模块 结合以上实验可选择升级或重装(proxy代理机上) vim /usr/local/nginx/conf/nginx.conf 新增一个location location /status { stub_status on; # allow 192.168.4.5;#只有自己能看,需要则添加 # deny all; }...
http第七层协议(应用层) tcp第4层协议(传输层) a 与 b 3次握手--------connection建立连接 reust(jpg)发送图片请求 -> <- 回应数据包reply 4次断开 --------- close 要1k图片 回60k(数据包 ) 带宽利用率不高 一次连接一次请求keepalive(会话保持,默认打开)作用:一次连接多次请求
超时时间x秒 (没超时则不断开连接) 执行4次断开 之后请求又3次握手 ... (client客户端访问)firefox http://192.168.4.5/status 与网络有关!!! Active connections: 1 #当前活动连接数 server accepts(接受连接总数) handled(处理连接总数) requests(请求数) 37 37 37 Reading(正在读几个包): 0 Writing(正在写回应的包): 1 Waiting(几个人等待状态): 0 nginx重启所有数重置 ss 查看系统中启动端口的信息 -a显示所有端口的信息 -n以数字格式显示端口号 -t显示TCP连接的端口 -u显示UDP连接的端口 -l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口 -p显示监听端口的服务名称是什么(也就是程序名称) 注意:在RHEL7系统中可以使用ss命令替代netstat命令,功能一样,选项一样。模拟测试网站并发量,逻辑要符合,不能100人共访问90次
ab -n(访问总次数) -c (人) URL ab -n 2000 -c 2000 http://192.168.4.5/ #2000人共访问2000次网页(网站尾加/)性能问题,优化并发量
vim /local/nginx/conf/nginx.confworker_processes 1; #与CPU内核数量一致
... events { worker_connections 65535; #最大连接数(并发量)可高点写,实际达不到 use epoll; #处理模型,nginx默认有可以不写(只负责查);apche默认select(一个一个找) }nginx -s reload
五、优化内核参数(最大文件数量) ulimit -acore file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3845 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024# pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 3845 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@proxy ~]# ulimit -Hn 100000 #H(hard)硬/强制,设置硬限制(临时规则) [root@proxy ~]# ulimit -Sn 100000 #S(soft)软/不强制,设置软限制(临时规则) [root@proxy ~]# vim /etc/security/limits.conf .. ..新增行 #用户或组 硬限制或软限制 需要限制的项目 限制的值 * soft nofile 100000 * hard nofile 100000测试
ab -n 5000 -c 5000 http://192.168.4.5/ nginx[静态/动态]影响并发量因素的: 静态1.读硬盘disk(的IO速度) ,net NIC网卡带宽 10M/s 两个设备一协商取最小值 动态2.disk IO速度 , net NIC ; CPU性能 ; 代码程序写的好不好六、优化nginx数据包头缓存
[root@proxy ~]# vim lnmp_soft/buffer.sh #!/bin/bash URL=http://192.168.4.5/index.html? for i in {1..5000} do URL=${URL}v$i=$i done curl $URL //经过5000次循环后,生成一个长的URL地址栏 一运行脚本就提示头部信息过大修改配置文件nginx
vim /usr/local/nginx/conf/nginx.conf .. .. http { client_header_buffer_size 1k; //默认请求包头信息的缓存 large_client_header_buffers 4 4k; //生产环境16k差不多,大请求包头部信息的缓存个数与容量 .. .. server ... }优化后,使用脚本测试长头部请求是否能获得响应
七、浏览器本地缓存静态数据火狐浏览器地址栏输入about:cache
disk List Cache EntriesNumber of entries: 29
Maximum storage size: 358400 KiB Storage in use: 34 KiB Storage disk location: /root/.cache/mozilla/firefox/kug2f43d.default/cache2 Expires -- 缓存到期时间1.清理本地缓存
2.修改nginx配置文件 [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { expires 30d; //定义客户端缓存时间为30天 } cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html #复制图片过取测试缓存信息 firefox http://192.168.4.5/day.jpg 再查看about:cache的Expires变化八、日志切割
日志文件越来越大如何切割?
1.把旧的日志重命名 2.看kill USR1 PID(nginx进程pid) USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。cd /usr/local/nginx/logs
mv access.log access.log.bak cat nginx.pid kill USR1 pid #发送信号给某个进程 kill(发信号) -15 进程 #发信号15给进程 3.设置计划任务 vim /usr/local/nginx/logbak.sh #!/bin/bash date=`date +%Y%m%d` logpath=/usr/local/nginx/logs mv $logpath/access.log $logpath/access-$date.log mv $logpath/error.log $logpath/error-$date.log kill -USR1 $(cat $logpath/nginx.pid)[root@proxy ~]# crontab -e
03 03 * * 5 /usr/local/nginx/logbak.sh --------------------------------------------------------------------------------------九、对网页进行压缩 10/s a --------------> jd.com(30M) 10/s a --------------> jd.com(30M) --压缩--(28M) 所有浏览器自带解压 gzip压缩免费,RAR压缩收费 小文件压缩越压越大(不建议压小文件) 压缩比率默认居中 多媒体文件(jpg,png,avi,mo3,mp4)本身就已压缩过了 文本文档 .txt .html .css pdf xls 适合压缩(效果明显) 对特定文件压缩,类型参考 vim /usr/local/nginx/conf/mime.types 类型 扩展名 audio/mpeg mp3;[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
http { .. .. gzip on; //开启压缩 gzip_min_length 1000; //小文件不压缩 gzip_comp_level 4; //压缩比率 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; //对特定文件压缩,类型参考mime.types .. .. } 十、服务器内存缓存 如果需要处理大量静态文件,可以将文件缓存在内存,下次访问会更快。 http { open_file_cache max=2000 inactive=20s; #设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄,无人访问就关 open_file_cache_valid 60s; 60秒过后不管怎样都清掉 open_file_cache_min_uses 5; 页面访问次数超过5次才被缓存(热点缓存) open_file_cache_errors off; 缓存出错不报警(error日志里不缓存) }以上操作围绕lnmp_soft.tar.gz
---------------------------------------------------------------------------------------------------
网页文件参考 <html> <head><title>VM</title></head> <body bgcolor=white> <center><h1>敌军还有五秒到达Web1</h1></center> <hr><center>王者营地</center> </body> </html>
转载地址:http://xhiqi.baihongyu.com/