一、Nginx服务基础 Nginx(enginex)专为性能优化而开发,其特点是占有内存少,它的稳定性和低系统资源消耗,以及对并发连接的高处理能力,(单台物理服务器可支持5000个并发请求)。事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。同时也提供了IMAPPOP3SMTP服务。 Nginx的优点:可以高并发连接官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑24万并发连接数。内存消耗少NginxPHP(FastCGI)服务器,在3万并发连接下,开启10个Nginx进程消耗150MB内存,15MB10150MB,开启的64个PHPCGI进程消耗1280内存,20MB641280MB,加上系统自身消耗的内存,总共消耗不到2GB的内存。成本低廉购买F5BIGIP、NetScaler等硬件负载均衡交换机,需要十多万到几十万人民币,而Nginx为开源软件,采用的是2clauseBSDlike协议,可以免费试用,并且可用于商业用途。配置文件非常简单网络和程序一样通俗易懂,即使,非专用系统管理员也能看懂。支持Rewrite重写能够根据域名、URL的不同,将http请求分到不同的后端服务器群组。内置的健康检查功能如果NginxProxy后端的某台Web服务器宕机了,不会影响前端的访问。节省带宽支持GZIP压缩,可以添加浏览器本地缓存的Header头。稳定性高用于反向代理,宕机的概率微乎其微。支持热部署Nginx支持热部署,它的自动特别容易,并且,几乎可以7天24小时不间断的运行,即使,运行数个月也不需要重新启动,还能够在不间断服务的情况下,对软件版本进行升级。 下图是Nginx、Apache、lighttpd的性能对比: 已上说了那么多都是为了凸显Nginx性能的强大,那么如何基于centos7搭建Nginx网站服务器(包含虚拟web主机的配置),下面我们继续来讲解Nginx的配置以及在虚拟机上的应用:二、准备工作:centos7服务器一台;centos7系统盘一个; 也可以从官网网站http:www。nginx。org下载。三、开始搭建Nginx网站(挂载系统盘,安装所需的依赖包。): 1、安装所需依赖包,均由系统盘提供: 2、编译安装及配置优化Nginx〔rootlocalhostmedia〕useraddMssbinnologinnginx创建系统用户〔rootlocalhostmedia〕tarzxfnginx1。12。0。tar。gzCusrsrc解包〔rootlocalhostmedia〕cdusrsrcnginx1。12。0〔rootlocalhostnginx1。12。0〕。configureprefixusrlocalnginxusernginxgroupnginxwithhttpstubstatusmodulemakemakeinstall编译安装Nginx〔rootlocalhost〕lnsusrlocalnginxsbinnginxusrlocalsbin创建主程序的链接文件为了使Nginx服务的启动,停止,重载等操作更加方便,可以编辑Nginx服务脚本。脚本编译如下:〔rootlocalhost〕vimetcinit。dnginx编辑服务脚本!binbashchkconfig:9920PROGusrlocalnginxsbinnginxPIDFusrlocalnginxlogsnginx。pidcase1instart)PROG;;stop)killsQUIT(catPIDF);;restart)0stop0start;;reload)killsHUP(catPIDF);;)echoUSAGE:0{startstoprestartreload}exit1esacexit0〔rootlocalhost〕chmodxetcinit。dnginx添加执行权限〔rootlocalhost〕chkconfigaddnginx添加为系统服务〔rootlocalhost〕systemctlstartnginx启动Nginx服务,以确认脚本的正常运行〔rootlocalhost〕vimusrlocalnginxconfnginx。conf调整配置文件,以优化web服务。。。。。。。。。。。。。。workerprocesses2;工作进程数errorloglogserror。log;错误ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a文件位置errorloglogserror。lognotice;errorloglogserror。loginfo;pidlogsnginx。pid;PID文件的位置events{useepoll;在even{}中添加该行以提高性能workerconnections4096;每个进程处理4096个连接} 以上的优化是基于全局配置实施的,各项优化的含义如下:workerprocesses:表示工作进程的数量,若服务器由多块CPU或者使用多核处理器,可以参考CPU核心总数来指定工作进程数。具体含义在workerconnections配置项中体现出来,workerconnections:这个配置项指定的是每个进程处理的连接,一般在10000以下(默认为1024),与上面工作进程数量的配置项关联,举个栗子:若工作进程数为8,每个进程处理4096个连接,则允许Nginx正常提供服务的连接数已经超过了3万个(4096832768)。当然,具体还要看服务器硬件、网络带宽等物理条件的性能表现。 3、搭建基于域名的虚拟web主机: 1、HTTP配置: Nginx的配置文件使用http{}界定标记用于设定HTTP服务器,包括访问日志、http端口、网页目录、默认字符集、连接保持,以及虚拟web主机、php解析等网站全局设置,其中大部分包含在子界定标记server{}内。server{}代表一个具体的网站设置。〔rootlocalhost〕vimusrlocalnginxconfnginx。confhttp{includemime。types;defaulttypeapplicationoctetstream;logformatmainremoteaddrremoteuser〔timelocal〕requeststatusbodybytessenthttprefererhttpuseragenthttpxforwardedfor;去掉上面三行开头的号accessloglogsaccess。logmain;访问ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a位置sendfileon;开启高效传输文件模式tcpnopushon;keepalivetimeout0;keepalivetimeout65;连接保持超时gzipon;server{listen80;web服务器监听端口,可以使用ip地址:端口的形式servernamewww。test1。com;网站域名charsetutf8;网站默认字符集,须去掉前面的号accessloglogstest1。access。logmain;访问ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a文件名locationstatus{添加locationstatus以便开启状态统计,访问位置为statusstubstatuson;打开状态统计功能accesslogoff;关闭此位置的ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a记录}location{rootvarwwwtest1;网站根目录indexindex。htmlindex。php;默认首页,改为index。php以便支持php网页};。。。。。。。。。。。。。。。。。。。。。。。。。。errorpage50050250350450x。html;内部错误的反馈页面location50x。html{错误页面配置roothtml;}}} 以上配置只是搭建了一个网站服务,若想运行多个,可复制配置文件最后面提供的模板,粘贴到server{}配置上面,因为在配置文件中有太多的{},为了避免错误,所以才需复制到原有的server{}之上,如下:server{listen80;servernamewww。test2。com;charsetutf8;accessloglogstest2。access。logmain;locationstatus{stubstatuson;accesslogoff;}location{rootvarwwwtest2;indexindex。htmlindex。php;}}server{listen80;servernamewww。test1。com;。。。。。。。。。。。。。。。。。。。。。。。。。。。 至此,虚拟主机搭建已经完成,需重启服务,以服务生效,来验证web服务器的正常运行(DNS需自行设置) 四、访问状态统计虚拟主机应用〔rootlocalhost〕nginxt重启服务前使用该命令检查配置文件,若配置文件有错,会提示错在第几行,若没错,则显示OK,有错误的话,重启服务不会报错,但配置文件不生效。nginx:〔emerg〕unexpected;inusrlocalnginxconfnginx。conf:44表示第44行有错误nginx:configurationfileusrlocalnginxconfnginx。conftestfailed〔rootlocalhost〕nginxt以下显示ok,表示没问题。nginx:theconfigurationfileusrlocalnginxconfnginx。confsyntaxisoknginx:configurationfileusrlocalnginxconfnginx。conftestissuccessful下面准备网站目录及测试文件,为两个虚拟web主机分别建立根目录,并准备测试首页以方便在测试时区分〔rootlocalhostnamed〕mkdirpvarwwwtest1〔rootlocalhostnamed〕mkdirpvarwwwtest2〔rootlocalhostnamed〕echowww。test1。comvarwwwtest1index。html〔rootlocalhostnamed〕echowww。test2。comvarwwwtest2index。html 客户机验证: 访问www。test1。com的首页: 访问www。test1。com的状态统计页: 上述含义如下: Activeconnections表示当前的活动连接数为2;serveracceptshandledrequests表示已处理的连接信息,三个数字分别表示已处理连接数3个,成功的握手次数为3个,已处理的请求为6个。访问www。test2。com的首页: 访问www。test2。com的状态统计页: 已上就是访问状态统计与虚拟主机的应用,感谢阅读。 原文转载于: https:blog。51cto。com142233702445860 分享安装NextCloud私有云盘一、NextCloud介绍 1、简介 Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Mac、Android、iOS、Linux等各种平台,也提供了网页端以及WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。 Nextcloud也提供了许多应用安装,包括但不限于Markdown在线编辑、OnlyOffice(需另外部署服务端)、思维导图、日历等,你可以自行选择以丰富个人网盘的功能。 Nextcloud的服务端部署方式有很多种,本文采用基于LNMP环境源码安装。 2、Nextcloud部署 本文采用的LNMP环境可参考我另一篇文章部署(LNMP环境部署) 1)下载Nextcloud安装包 〔rootlocalhost〕wgethttps:download。nextcloud。comserverreleasesnextcloud18。0。1。tar。bz2 2)解压Nextcloud安装包 〔rootlocalhost〕tarxfnextcloud18。0。1。tar。bz2 3)拷贝Nextcloud到发布目录 〔rootlocalhost〕mvnextcloudusrlocalnginxhtml 4)编辑Nginx。conf配置文件 〔rootlocalhost〕vimusrlocalnginxconfnginx。conf 配置内容如下定义Nginx运行的用户和用户组userwwwwww;启动进程,通常设置成和cpu的数量相等workerprocessesauto;定义最大打开文件数workerrlimitnofile10240;定义PID文件pidlogsnginx。pid;events{epoll是多路复用IO(IOMultiplexing)中的一种方式,但是仅用于linux2。6以上内核,可以大大提高nginx的性能useepoll;单个后台workerprocess进程的最大并发链接数(最大连接数连接数进程数)workerconnections10240;尽可能多的接受请求multiaccepton;}http{设定mime类型,类型由mime。type文件定义includemime。types;defaulttypeapplicationoctetstream;设定ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a格式logformatmainremoteaddrremoteuser〔timelocal〕requeststatusbodybytessenthttprefererhttpuseragenthttpxforwardedfor;定义访问ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a存放路径accessloglogsaccess。logmain;定义错误ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a存放路径errorloglogserror。logwarn;limitreqzone定义在http块中,binaryremoteaddr表示保存客户端IP地址的二进制形式。Zone定义IP状态及URL访问频率的共享内存区域,zonekeyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,区域可以存储160000个IP地址Rate定义最大请求速率。速率不能超过每秒20个请求。limitreqzonebinaryremoteaddrzonemylimit:10mrate20rs;sendfile指令指定nginx是否调用sendfile函数(zerocopy方式)来输出文件,对于普通应用必须设为onsendfileon;防止网络阻塞tcpnopushon;keepalive超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后继请求时,keepalivetimeout功能可避免建立或重新建立连接。(节省服务器资源、CPU、内存、网卡)keepalivetimeout120;提高数据的实时响应性tcpnodelayon;隐藏版本号servertokensoff;开启gzip压缩gzipon;设置允许压缩的页面最小字节数gzipminlength1k;设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。例如44k代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。48k代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存gzipbuffers464k;设置压缩响应所需的最小http协议版本gziphttpversion1。1;压缩级别大小,最大为9,值越小,压缩后比例越小,CPU处理更快,值越大,消耗CPU比较高。gzipcomplevel4;设置匹配MIME类型进行压缩gziptypestextplainapplicationxjavascripttextcssapplicationxml;给CDN和代理服务器使用,针对相同url,可以根据头信息返回压缩和非压缩副本gzipvaryon;允许客户端请求的最大单文件字节数clientmaxbodysize10m;缓冲区代理缓冲用户端请求的最大字节数clientbodybuffersize128k;nginx跟后端服务器连接超时时间(代理连接超时)proxyconnecttimeout90;后端服务器数据回传时间(代理发送超时)proxysendtimeout90;连接成功后,后端服务器响应时间(代理接收超时)proxyreadtimeout90;设置代理服务器(nginx)保存用户头信息的缓冲区大小proxybuffersize4k;proxybuffers缓冲区,网页平均在32k以下的话,这样设置proxybuffers432k;高负荷下缓冲大小(proxybuffers2)proxybusybufferssize64k;设定请求缓冲largeclientheaderbuffers44k;客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconfPAGESIZE取得。clientheaderbuffersize4k;这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存openfilecachemax102400inactive20s;这个是指多长时间检查一次缓存的有效信息openfilecachevalid30s;openfilecache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的openfilecacheminuses1;定义引用配置文件路径includedomains。conf;} 5)编辑Nginx。conf配置文件 〔rootlocalhost〕mkdirusrlocalnginxconfdomains 〔rootlocalhost〕vimusrlocalnginxconfdomainsnextcloud。confserver{listen80;servernamelocalhost;roothtmlnextcloud;accessloglogsaccessnextcloud。log;errorloglogserrornextcloud。log;addheaderReferrerPolicynoreferreralways;addheaderXContentTypeOptionsnosniffalways;addheaderXDownloadOptionsnoopenalways;addheaderXFrameOptionsSAMEORIGINalways;addheaderXPermittedCrossDomainPoliciesnonealways;addheaderXRobotsTagnonealways;addheaderXXSSProtection1;modeblockalways;fastcgihideheaderXPoweredBy;location(?:indexremotepubliccroncoreajaxupdatestatusocsv〔12〕updater。oc〔ms〕provider。)。php(?:){fastcgisplitpathinfo(。?。php)(。);setpathinfofastcgipathinfo;tryfilesfastcgiscriptname404;includefastcgiparams;fastcgiparamSCRIPTFILENAMEdocumentrootfastcgiscriptname;fastcgiparamPATHINFOpathinfo;fastcgiparammodHeadersAvailabletrue;fastcgiparamfrontcontrolleractivetrue;fastcgiintercepterrorson;fastcgirequestbufferingoff;fastcgipass127。0。0。1:9000;自定义}rewrite。wellknowncarddavremote。phpdavpermanent;rewrite。wellknowncaldavremote。phpdavpermanent;location{rewriteindex。php;}location。(?:pnghtmlttficojpgjpegbcmap){tryfilesuriindex。phprequesturi;accesslogoff;}location(?:updateroc〔ms〕provider)(?:){tryfilesuri404;indexindex。php;}location(?:。autotestoccissueindiedbconsole){denyall;}location(?:buildtestsconfiglib3rdpartytemplatesdata){denyall;}location。(?:cssjswoff2?svggifmap){tryfilesuriindex。phprequesturi;addheaderCacheControlpublic,maxage15778463;addheaderReferrerPolicynoreferreralways;addheaderXContentTypeOptionsnosniffalways;addheaderXDownloadOptionsnoopenalways;addheaderXFrameOptionsSAMEORIGINalways;addheaderXPermittedCrossDomainPoliciesnonealways;addheaderXRobotsTagnonealways;addheaderXXSSProtection1;modeblockalways;accesslogoff;}} 6)重启Nginx服务 〔rootlocalhost〕usrlocalnginxsbinnginxt 〔rootlocalhost〕usrlocalnginxsbinnginxsreload 7)创建Nextcloud数据库 〔rootlocalhost〕mysql mysqlcreatedatabasenextcloudcharsetutf8; mysqlshowgrantonnextcloud。tonextcloud’localhost’identifiedby‘123456’; mysqlflushprivileges; 8)创建NextCloud数据存储目录、并为其设置权限 〔rootlocalhost〕mkdirpusrlocalnginxhtmlnextclouddata 〔rootlocalhost〕chownRwww。wwwusrlocalnginxhtmlnextcloud 9)确认所有服务都已全部启动 〔rootlocalhost〕netstatlntup ActiveInternetconnections(onlyservers) ProtoRecvQSendQLocalAddressForeignAddressStatePIDProgramnam tcp00127。0。0。1:90000。0。0。0:LISTEN679phpfpm:master tcp000。0。0。0:33060。0。0。0:LISTEN32182mysqld tcp000。0。0。0:800。0。0。0:LISTEN16792nginx:worker二、Nextcloud使用 1)初始化NextCloud 提示:在浏览器中、输入服务器IP(192。168。0。117)即可出现如下界面 2)按照提示输入相关信息 点击安装完成即可 3)安装完成后,会出现以下界面 至此,NextCloud私有网盘部署成功。