公司做网站流程,购物商城网站都有哪些功能,如何把网站上传到凡科,广州网站开发费用目录
一、nginx的日志分割
二、nginx性能优化之启用epoll模型
三、nginx性能优化之设置worker进程数并与cpu进行绑核
四、nginx性能优化之调整worker的最大打开文件数和最大处理连接请求数量
五、nginx性能优化之启用gzip压缩#xff0c;提高传输#xff0c;减少带宽
六…目录
一、nginx的日志分割
二、nginx性能优化之启用epoll模型
三、nginx性能优化之设置worker进程数并与cpu进行绑核
四、nginx性能优化之调整worker的最大打开文件数和最大处理连接请求数量
五、nginx性能优化之启用gzip压缩提高传输减少带宽
六、nginx性能优化之设置keepalive超时时间以及最大请求连接数
七、nginx性能优化之设置页面缓存时间
八、nginx安全之隐藏版本号
九、nginx安全之修改进程运行的属主和属组
十、nginx安全之防盗链设置避免资源盗用以及节省带宽
十一、fpm参数优化 一、nginx的日志分割
nginx的日志是生成在安装目录下/usr/local/nginx/logs中大量的日志如果不做良好的管理长此以往会造成日志文件过大且日志分析困难 编写日志分割的脚本
#!/bin/bash
#this is used for cutting nginx logs
##定义日志收集的目录
newlogpath/var/log/nginx
##定义区分日志的标识采用时间标记计划每天一次日志分割
lastdaydate -d -1 day %Y%m%d
##找到应用程序生成日志的源路径
oldlogpath/usr/local/nginx/logs
##定义应用程序的pid号 也就是nginx的master进程号
pidcat ${oldlogpath}/nginx.pid##先判断收集日志的目录是否存在没有则创建有则进行下一步
[ -d $newlogpath ]||mkdir $newlogpath##使用mv命令进行日志分割将生成的访问日志和错误日志都移动到收集日志的目录下并添加时间标记
mv $oldlogpath/access.log $newlogpath/access.log.$lastday
mv $oldlogpath/error.log $newlogpath/error.log.$lastday##重新生成新的日志便于nginx记录后续访问事务
kill -USR1 $pid##删除大于30天的日志释放磁盘空间
find $newlogpath -mtime 30 -exec rm -rf {} \;chmod x ~/nginx_log.sh
crontab -e
0 0 * * * ~/nginx_log.sh
二、nginx性能优化之启用epoll模型
epoll模型使用的是IO多路复用技术这是一种基于事件处理的模型可以实现很高的并发量而且内存占用小。处理请求灵活效率高。 在event模块添加
user epoll;
底层采用epoll模型多路复用可以实现很高的并发量而且内存占用小。
三、nginx性能优化之设置worker进程数并与cpu进行绑核
为什么要绑核
##默认情况Nginx的多个进程可能跑在一个CPU上如果进行绑核可以分配不同的进程给不同的CPU处理充分利用硬件多核多CPU。
worker_processes auto;
worker_cpu_affinity 0001 0010 0100 1000;
##默认情况Nginx的多个进程可能跑在一个CPU上如果进行绑核可以分配不同的进程给不同的CPU处理充分利用硬件多核多CPU #将每个worker子进程与特定CPU物理核心绑定提升cpu利用率进而提升性能。避免同一个worker子进程在不同的CPU核心上切换或者多个进程跑在一个CPU上缓存失效降低性能。 四、nginx性能优化之调整worker的最大打开文件数和最大处理连接请求数量 除了调整应用程序 还需要调整系统内核的限制 在全局模块在配置
worker_rlimit_nofile 20480;
在event模块配置最大连接数量
worker_connections 20480;##记得同时修改内核参数数量是根据需求自定义的
[rootlocalhost ~]#vim /etc/security/limits.conf
* soft nofile 81920
* hard nofile 81920五、nginx性能优化之启用gzip压缩提高传输减少带宽
Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能 允许Nginx服务器将输出内容在发送客户端之前进行压缩以节约网站带宽提升用户的访问体验默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化 修改/usr/local/nginx/conf/nginx.conf配置文件 http {
...... gzip on; #取消注释开启gzip压缩功能gzip_min_length 1k; #最小压缩文件大小gzip_buffers 4 64k; #压缩缓冲区大小为4个64k缓冲区gzip_http_version 1.1; #压缩版本默认1.1前端如果是squid2.5请使用1.0gzip_comp_level 6; #压缩比率gzip_vary on; #支持前端缓存服务器存储压缩页面gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xmlrss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json; #压缩类型表示哪些网页文档启用压缩功能
......
} favicon.ico表示的是网站的小图标这里是没有的与nginx的配置没有关系
六、nginx性能优化之设置keepalive超时时间以及最大请求连接数
HTTP有一个KeepAlive模式它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求服务端会利用这个未被关闭的连接而不需要再建立一个连接。KeepAlive 在一段时间内保持打开状态它们会在这段时间内占用资源。占用过多就会影响性能。 keepalive_timeout
指定KeepAlive的超时时间timeout。
指定一个长连接最多可以保持多长时间服务器将会在这个时间后关闭连接。
Nginx的默认值是65秒有些浏览器最多只保持 60 秒所以可以设定为 60 秒。
若将它设置为0就禁止了keepalive 连接。第二个参数可选的指定了在响应头Keep-Alive:timeouttime中的time值。
这个头能够让一些浏览器主动关闭连接这样服务器就不必去关闭连接了。
没有这个参数Nginx 不会发送 Keep-Alive 响应头。client_header_timeout
客户端向服务端发送一个完整的 request header 的超时时间。
如果客户端在指定时间内没有发送一个完整的 request headerNginx 返回 HTTP 408Request Timed Out。client_body_timeout
指定客户端与服务端建立连接后发送 request body 的超时时间。
如果客户端在指定时间内没有发送任何内容Nginx 返回 HTTP 408Request Timed Out。
##ip数据包在传输的时候会进行分片会让数据包分开传输 等到接收端接收后会重新组合数据包也就是说数据分片以后到达的时间是不一样的。这里就是限制整个数据包完整传输的最大时间限制 测试一下 一般客户端小于等于服务端时间因为大量的timewait会占用tcp连接资源想要timewait在客户端产生这样可以避免浪费服务端的tcp连接请求资源 ##解决方式 服务器不要主动关闭让客户端去主动关闭那么timewait状态就在客户端 另一种是修改内核参数去收回timewait资源以及允许timeout的socket可以重用 七、nginx性能优化之设置页面缓存时间
设置缓存的时间以方便客户在后面访问相同的数据请求避免重复的请求加快数据访问可以减少服务器的带宽请求一般只对静态资源做缓存时间设置动态页面不设置缓存静态页面会在nginx服务器中定时更新但是动态页面是数据库实时更新 ##设置静态资源在客户端的缓存时间 location ~ \.(jpg|gif|mp3|mp4)$ {root html/static;expires 1h; #expires的意思是到期}缓存时间也是可以在三个地方设置分别是http server location
Expires就是用于设置缓存时间支持天d 小时h 分钟m 秒s 缓存时间也是可以在三个地方设置分别是http server location 八、nginx安全之隐藏版本号
第一种直接使用server_tokens off关闭版本号 ##在server模块中添加 server_tokens off;
方法二修改nginx的源代码的nginx.h文件这些文件一般都是函数等等 然后重新编译安装后测试 ##修改nginx的源代码 进行重新编译安装
vim /opt/nginx-1.24.0/src/core/nginx.h12 #define nginx_version 102400013 #define NGINX_VERSION 2.36.714 #define NGINX_VER Apache/ NGINX_VERSION修改完以后 重新编译安装
nginx -V./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_status_module
nake -j4
make install
cd /usr/local/nginx/conf/
vim nginx.conf
#server_tokens off;##注释这个模块让其默认开启
nginx -t
systemctl restart nginx
方法三使用模块插件实现响应请求头直接自定义删除 需要下载模块插件 然后进行重新配置编译安装再去修改配置文件 ./configure --add-module模块路径 下载一个模块插件 可以自定义请求头的内容
headers-more-nginx-module-0.34.tar.gz 插件包解压到一个目录编译安装 nginx ./configure --add-module模块路径 make make install
##如./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_status_module --add-module/opt/headers-more-nginx-module-0.34 make make install修改 nginx.conf 文件在 http 配置块加 more_clear_headers 响应头字段;
##在http模块下添加more_clear_headers Server; ##注意大小写
表示完全隐藏该响应的请求头即可去除 nginx 响应头任何想去除的字段 九、nginx安全之修改进程运行的属主和属组
主进程由root创建子进程由nginx创建
这个一般在配置模块的时候就已经设置了
./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_status_module还有一种就是修改配置文件中的user 十、nginx安全之防盗链设置避免资源盗用以及节省带宽
先准备测试环境
主服务器192.168.20.30这是域名解析为www.accp.com
关于accp的测试文件
[rootlocalhost html]#cat accp.html
head/head
body
h1I am accp/h1
img srctest.jpg ##引用自己站点的图片
/body 另一台nginx服务器作为想要盗用的web服务器先部署环境
这台服务器的ip是192.168.20.8对应域名是www.benet.com
[rootlocalhost html]#cat daotu.html
head/head
body
h1this is a daotu/h1
img srchttp://www.accp.com/test.jpg ##盗图
/body 现在想要实现不允许盗图
使用rewrite模块 重写url 来实现防盗链
主服务器accp的配置设置防盗链location ~ \.(jpg|gif|mp3|mp4)$ {root html/static;valid_referers none blocked www.accp.com *.accp.com;if ($invalid_referer) {rewrite ^/ http://www.accp.com/static/error.png;}}
同时需要准备一张error.png图片放在html/static中
同时该图片的格式png 不能出现在location的匹配中否则会死循环浪费资源 ~* \.(jpg|gif|swf)$ 这段正则表达式表示匹配不区分大小写以.jpg 或.gif 或.swf 结尾的文件
valid_referers 设置信任的网站可以正常使用图片
none允许没有http_refer的请求访问资源根据Referer的定义它的作用是指示一个请求是从哪里链接过来的如果直接在浏览器的地址栏中输入一个资源的URL地址那么这种请求是不会包含 Referer 字段的
blocked允许不是http://开头的不带协议的请求访问资源
*.kgc.com只允许来自指定域名的请求访问资源如 http://www.kgc.comif语句如果链接的来源域名不在valid_referers所列出的列表中$invalid_referer为true则执行后面的操作即进行重写或返回 403 页面。 关于valid_referer 如果是 http://www.accp.com/zip.html www.accp.com/zip.html --- www.accp.com/test.jpg 那么$valid_referer 就是www.accp.com/zip.html 如果是 http://www.accp.com/test.jpg ---直接访问 那么$valid_referer 就是none 空 如果是 http://www.benet.com/daotu.html www.benet.com/daotu.html --- www.accp.com/test.jpg 那么$valid_referer 就是www.benet.com/daotu.html 进行结果验证 关于电脑真机中如何设置ip与域名的映射关系 文件修改的时候进入属性——安全——编辑指定当前用户有写入的权限及时修改 及时撤回 十一、fpm参数优化
Nginx的PHP解析功能实现如果是交由FPM处理的为了提高PHP的处理速度可对FPM模块进行参数的调整。根据服务器的内存与服务负载调整FPM模块参数
vim /usr/local/php/etc/php-fpm.conf
pid run/php-fpm.pidvim /usr/local/php/etc/php-fpm.d/www.conf
--96行--
pm dynamic #fpm进程启动方式动态的
--107行--
pm.max_children20 #fpm进程启动的最大进程数
--112行--
pm.start_servers 5 #动态方式下启动时默认开启的进程数在最小和最大之间
--117行--
pm.min_spare_servers 2 #动态方式下最小空闲进程数
--122行--
pm.max_spare_servers 8 #动态方式下最大空闲进程数kill -USR2 cat /usr/local/php/var/run/php-fpm.pid #重启php-fpm
netstat -anpt | grep 9000