Linux服务器端Web服务三剑客(Apache Lighttpd Nginx).docx_第1页
Linux服务器端Web服务三剑客(Apache Lighttpd Nginx).docx_第2页
Linux服务器端Web服务三剑客(Apache Lighttpd Nginx).docx_第3页
Linux服务器端Web服务三剑客(Apache Lighttpd Nginx).docx_第4页
Linux服务器端Web服务三剑客(Apache Lighttpd Nginx).docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux服务器端Web服务三剑客(Apache Lighttpd Nginx)一、Apache 概要:Apache HTTP Server(简称Apache)是Apache软件基金会(官网)的一个开源Web服务项目,可以在大多数操作系统中运行,由于其多平台和安全性等特性成为当前最流行的的Web服务器端软件之一。Apache起初有伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发,此后Apache被开放源代码团体的成员不断的发展和加强。1996年4月以来Apache一直是Internet上最流行的Web服务器,不过随着拥有大量域名数量的主机域名商转换为微软的IIS平台,再加上Google退出自己的Web服务器平台GWS及Lighttpd、Nginx等一些轻量级Web服务器的推出,Apache市场占有率近年来出现下滑的趋势,尽管如此Apache依然是现阶段Internet市场上占有率最高的Web服务器软件。1.1.1 Apache安装 Apache的广泛应用,很多Linux发行版都包括了Apache的软件,当然亦可以自行使用源码包安装,使用定制化的安装组件,这样最好。软件包包括httpd、httpd-devel、httpd-manual。1.2.1 Apache配置 一般在Redhat和CentOS上使用YUM安装之后,默认情况下其配置文件位于/etc/httpd目录下,其中主配置文件在conf/httpd.conf。还有默认情况下/etc/conf.d/*.conf文件会自动加载到/etc/httpd/conf/httpd.conf文件中。这个功能,可以将需要配置的功能模块分成多个配置文件,便于管理。 Include conf.d/*.conf /httpd.conf文件中配置 其他配置 /usr/lib64/httpd/modules/, /etc/httpd/modules/ / Apache支持的模块 /var/www/html/ / 默认的网页安置目录 /var/www/error/ / 访问网站错误时的显示错误信息目录 /var/www/cgi-bin/ / 可执行的CGI存放目录 /var/log/httpd / 日志存放位置 /usr/sbin/apachectl / 执行脚本的位置 /usr/sbin/httpd / 这个才是二进制的执行文本 /usr/sbin/htpasswd / Apache提供的最简单的密码访问用户功能1.2.3 主配置文件解析(httpd.conf) 1 有一下三部分组成 grep Section /etc/httpd/conf/httpd.conf # Section 1: Global Environment / 全局配置# Section 2: Main server configuration / 主服务配置# Section 3: Virtual Hosts / 虚拟主机配置 在Apache中通过容器Directory、File、Location对配置文件(Main server configuration或Virtual Hosts)进行颗粒化控制。最常用的容器就是文件系统和网络空间。文件系统容器格式: 网络空间格式: 参数 参数 参数 参数 参数 参数 在每次修改完Apache配置文件之后,可通过httpd -t检查配置文件语法有没有问题。 2.初始配置默认情况下,安装完Apache就已经可以使用啦,但是推荐修改某些参数。(1)ServerName 配置服务器用于识别自己的主机名和端口。当未指定ServerName时,Apache会尝试对IP地址进行反向解析来推断FQDN。推荐使用ServerName指定一个FQDN及端口。在下面的例子中配置Apache的FQDN(可以是A记录,也可以是CNAME别名)为。 ServerName :80(2)ServerAdmin 配置Apache中返回错误信息中所包含的管理员邮箱。在下面的例子中配置管理员的邮箱为 ServerAdmin (3)ServerTokens 配置客户端收到Apache回应的“Server:”信息中的内容(一般只在网页中通过脚本才会在客户端显示,但在有些情况下,不需要脚本也会显示这些内容)。在RHEL/CentOS中默认为OS,推荐修改为Prod。该参数可设置为以下值之一。 Prod: 返回Apache的产品名称。 Major:返回Apache主版本号。 Minor:返回Apache主版本号及此版本号。 Min: 返回Apache主版本号、次版本号、编译版本号。 OS: 返回Apache主版本号、此版本号、编译版本号、操作系统。 Full:返回最详细的信息。(4)默认首页配置 当客户端访问Web服务时,如果没有指定所访问页面时,Apache将根据DirectoryIndex参数的设置在目录中查找相应页面显示。如下面的例子中Apache将尝试查找客户端所指定的目录中是否含有名为index.html、index.html.rar、default.html其中之一的文件,如果有则显示器内容,如果没有默认情况显示目录所有内容(如果目录中存在多个DirectoryIndex参数所指定的文件,则根据顺序显示第一个文件)。 DirectoryIndex index.html index.html.rar default.html(5)侦听IP及端口配置 Apache在默认情况下会侦听本机所有网络接口的80端口,可通过Listen参数改变侦听的IP或端口。Listen参数如下: Listen IP地址:端口rootwww # netstat -tunlp | grep httpdtcp 0 0 :80 :* LISTEN 3644/httpd 在配置Listen参数是至少需要制定端口,如不指定IP地址,默认为本机所有IP地址。亦可以通过指定Listen参数侦听本机的某几个IP地址和端口。 Listen :80 Listen :8080(6)超时配置 Apache超时配置一般是通过Timeout(单位:秒,在RHEL/CentOS默认为120)参数配置,但影响Apache超时的参数还有以下几个。 KeepAlive:是否支持持久连接(在RHEL/CentOS默认为off)。KeepAlive参数决定当处理完客户端发起的HTTP请求后是否立即关闭TCP连接,如果KeepAlive设置为on,那么用户完成一次访问后,不会立即断开连接,当后继有请求时,会继续在这一次TCP连接中完成,而不用重复建立新的TCP连接好人关闭连接,这样可以提高用户访问速度。如果使用了代理服务器推荐配置为。 MaxKeepAliveRequests: 在持久连接期间,所允许的最大请求数量。指定0是表示不作限制(在RHEL/CentOS默认为100) KeepAliveTimeout:在同一个客户端连接中,下一个请求的等待时间(单位为秒,在RHEL/CentOS默认为15) KeepAlive参数的设置需要根据实际情况判断,比如Web服务器内存是否充足,网页内容是否是有动态脚本生成,网页是否引用大量JavaScript、CSS或类型文件,是否使用代理服务器等。下面几种情况常见配置推荐方法。 当客户端浏览的网页包含多个JavaScripts、CSS或其他类型文件,并且这些文件位于同一台Web服务器时,一般将Keepalive设置为On。 当客户端的网页只包含少量JavaScripts、CSS或其他类型文件,KeepAlive的设置作用不大。 当客户端浏览的是动态网页,其内容大多通过动态脚本生成时,一般讲KeepAlive设置为”off“.(7)连接配置Apache提供以下参数用于对客户端的连接数量等进行配置。 #StartServers: initial number of server processes to start # MaxClients: maximum number of simultaneous client connections # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves StartServers:指定启动Apache时启动的httpd进程个数(在RHEL/CentOS默认为8) ServerLimit:指定Apache允许配置同时处理的客户端请求的最大值 MaxClients:指定Apache可以同时处理的客户端请求(在RHEL/CentOS默认为256),这是对Apache性能影响最大的参数。如果请求总数已经达到这个值,那么下面的请求就要排队,直到某个请求处理完毕。可以根据硬件配置和负载情况来动态调整这个值。256也是Apache默认情况最大值,如果希望配置大于256时,需要首先将ServerLimit参数的值配置大于MaxClient的值。 MinSpareThreads:Apache保持的最小空闲线程数(在RHEL/CentOS默认为5) MaxSpareThreads:Apache保持的最大空闲线程数(在RHEL/CentOS默认为20)。如果空闲进程数大于这个值,Apache会自动删除某些多余进程数。这个值一般不要设的过大,但如果设的比MinSpareThreads小,Apache会自动把MaxSpareThreads调整为MinSpareThreads+1. MaxRequestsPerChild:每个子进程被请求服务多少次后被kill掉。0表示不限制,(在RHEL/CentOS默认为是4000)。(8)字符集配置。 如果确定所有页面都是用GB2312时,可将AddDefaultCharset参数设置为GB2312。但是如果有一些页面并不使用GB2312,这样设置会导致在页面中字符集设置(在页面中使用)无效,这是因为Apache已经先将GB2312指定为页面默认的字符集,因此这种情况下最好的解决方案是将AddDefaultCharset参数设置为off,并在页面(对于动态页面也可以在对应的脚本引擎中设置,比如PHP可以在/etc/php.ini通过default_charset参数设置)中设置字符集。(9)单个IP地址并发配置。 当在网站提供了HTTP方式下载时,对于目前大多数客户端在下载时都采用多线程下载工具(如迅雷、超级旋风、网际快车等),这样会给Web服务器带来巨大压力。解决这类问题也有很多方式,其中一种就是在Apache中单个IP地址的并发数及下载速度进行限制。单个IP地址并发数限制可通过mod_limitipconn模块实现。mod_limitipconn是一个非官方的模块,使用该模块后当同一个IP地址的连接数达到限制时,Apache对客户端的Get请求发送”HTTP/1.1 503 Service Temporarily Unavailable“(该模块不能阻止DDOS或类似攻击)。 下载mod_limitipconn模块,并编译安装 mod_limitipconn-0.23.tar.bz2 tar xjvf mod_limitipconn-0.23.tar.bz2cd mod_limitipconn-0.23make install 在安装完成之后,按照README配置limitipconn.conf文件(在/etc/httpd/conf.d/下)。 mod_limitipconn配置时使用Location指定要限制的并发的目录,MaxConnPerIP指定单个IP最大并发的数量,NoIPLimit指定在Location所指定目录中不作限制的目录,OnlyIPLimit指定只限制特定的文件(根据MIME内容类型)。例如README定义的例子# This command is always neededExtendedStatus On# Only needed if the module is compiled as a DSOLoadModule limitipconn_module lib/apache/mod_limitipconn.so # Set a server-wide limit of 10 simultaneous downloads per IP, # no matter what. MaxConnPerIP 10 # This section affects all files under http:/your.server/somewhereMaxConnPerIP 3# exempting images from the connection limit is often a good# idea if your web page has lots of inline images, since these# pages often generate a flurry of concurrent image requestsNoIPLimit image/* # This section affects all files under /home/*/public_htmlMaxConnPerIP 1# In this case, all MIME types other than audio/mpeg and video*# are exempt from the limit checkOnlyIPLimit audio/mpeg video (10)下载速度配置根据来源IP进行带宽限制可通过bw_mod模块实现。bw_mod是一个非官方的模块,使用该模块后传输速度到达限制的时候,Apache会断开与客户端的连接。bw_mod配置方法如下。下载源码包,解压之。tar -xzvf mod_bw-0.92.tgz -C mod_bw编译安装 cd mod_bw apxs -cia mod_bw.c在mod_bw配置时可以使用一下参数。 BandWidthModule On|Off:当BandWidthModule为On时,才开启bw_mod的带宽限制功能。 BandWidth From bytes/s:设置带宽限制的最大值,如在客户端来源使用all关键字时表示所有访问Apache的客户端,当BandWidth值为0时,则表示不限制带宽。两个参数的意义。 From is the origin of the connections. It could be a full host, part of a domain, an ip address, a network mask (i.e /24 or /) or all. The second parameter indicates the total speed available to the Origin.If speed is 0, there is no limit. Example : BandWidth all 20480 /将所有客户端最大带宽限制为200Kbit/s BandWidth localhost 10240 /将本地客户端的最大带宽限制为100Kbit/s BandWidth 0 /将IP地址为的客户端不设限制 ( Order is relevant. First entries have precedence )/优先匹配原则 MinBandWidth From bytes/s:设置连接进来的每个客户端带宽限制的最小值。 Examples : BandWidth all 102400 MinBandWidth all 50000 /* The example above will set a top speed of 100kb for the 1 client. If more clients come, it will be splitted accordingly but everyone will have at least 50kb (even if you have 50 clients) */ BandWidth all 50000 MinBandWidth all -1 /* This example, makes everyone have 50kb as top speed.*/ BandWidth u:User-Agent bytes/s:通过客户端信息限制带宽。 Example : BandWidth u:Mozilla/5(.*) 10240 /将使用FireFox的客户端最大带宽限制为100Kbit/s BandWidth u:wget 102400 / 将使用wget的客户端最大带宽限制为100Kbit/s LargeFileLimit Type Minimum Size bytes/s:对于指定类型的文件超过指定大小(单位为Kbit/s)的文件使用特定的限制带宽。 Example : LargeFileLimit .avi 500 10240 /* This limits .avi files over (or equal to) 500kb to 10kbytes/s */ MaxConnection From Max:设置最大连接数,当到达最大连接数时,Apache将返回503错误给客户端。Maxconnection参数使用时必须有对应的BandWidth,否则该参数将会被忽略。 Example : BandWidth all 102400000 MaxConnection all 20 or BandWidth all 102400000 /将所有客户端最大带宽限制为100Kbit/s BandWidth /24 10240 /将/24网段的最大带宽限制为100Kbit/s MaxConnection all 20 /将所有客户端的最大连接数限制为20 MaxConnection /24 5 /将/24网段的最大连接数限制为5 MaxConnection u:User-Agent Max:通过客户端信息限制最大连接数。 Example : MaxConnection u:Mozilla/5(.*) 5 /将使用FireFox的客户端最大连接数限制为5 MaxConnection u:wget 5 /将使用wget的客户端信息限制为53.个人主页配置 所谓个人主页,就是Apache中显示每个用户家目录中指定目录中的页面。实现该功能主要是通过UserDir参数。默认RHEL/CentOS是disable,也就是禁止个人主页功能的。配置如下 在httpd.conf文件中,关于用户个人主页目录的设置修改如下:#UserDir disable UserDir public_html在httpd.conf文件中,有关于用户个人主页目录的指令块,取消其前面的注释:AllowOverride FileInfo Authconfig Limit IndexesOptions MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Order allow,denyAllow from allOrder allow,denyDeny from all/以上配置对目录进行了访问控制。新建一个用户,名为gentoo,如果该用户想拥有自己的个人站点,则该用户登录后,做以下操作:cd/转到用户家目录mkdir public_html /建立个人主页目录 如果设置Selinux开启的话chcon -R -t httpd_user_content_t public_html/ /更改目录的SElinux权限,或设置禁止Selinuxsetsebool P httpd_enable_homedirs=1 chmod 755 public_html /更改目录权限echo _ This is gentooS Home _ gentoo.html /建立个人主页文件用浏览器访问http:/IP或者FQDN/gentoo如果想在访问gentoo的主页面时,去掉号(即http:/www.IP或者FQDN/gentoo的形式),大多人都不喜欢用,则需在httpd.conf中加入以下内容:Alias /ososboy /home/ososboy/public_html/或使用命令ln s /home/ososboy/public_html ososboy提示:apache的启动帐户一定要对个人站点主目录有读和执行权限。4.虚拟主机配置 虚拟主机是服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP、邮件等多种服务器,将一台服务器的某项或者全部服务器内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。如果划分是系统级别的,则称为虚拟服务器。多台虚拟服务器共享一台真实服务器的资源,每个用户承受的硬件费用、网络服务费用、通信线路的费用均大幅度降低。很多Web服务器,相当一部分采用虚拟主机。(1)基于IP地址的虚拟主机。NameVirtualHost *:80 /指定在的80端口建立虚拟主机ServerAdmin /指定该虚拟主机的管理员邮箱(不是必须的)DocumentRoot /groups/smallco/www /指定网站存放位置ServerName /Hostname and port that the server uses to identify itself(不是必需的)ErrorLog /groups/smallco/logs/error_log /错误日志存放位置TransferLog /groups/smallco/logs/access_log /正常日志存放位置ServerAdmin DocumentRoot /groups/baygroup/wwwServerName ErrorLog /groups/baygroup/logs/error_logTransferLog /groups/baygroup/logs/access_log(2)基于端口的虚拟主机NameVirtualHost *ServerName www.domain.tldServerAlias domain.tld *.domain.tldDocumentRoot /www/domainServerName www.otherdomain.tldDocumentRoot /www/otherdomain(3)基于主机头的虚拟主机NameVirtualHost *:80ServerName www.domain.tldServerAlias domain.tld *.domain.tldDocumentRoot /www/domainServerName www.otherdomain.tldDocumentRoot /www/otherdomain5.别名配置 对于有些太长URL在Apache中可以通过别名的配置减少客户端URL的输入量。 Alias /icons/ /var/www/icons/ Alias /gentoo/ /home/gentoo/public_html/ ServerName ServerAlias server server2 ServerAlias *. UseCanonicalName Off # . 6.HTTPS配置 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,基于SSL的HTTP协议)使用了HTTP协议,但HTTPS使用不同于HTTP的默认端口及一个加密、身份验证层(HTTP与TCP之间)。这个协议最初由网景公司开发,提供了身份验证与加密通信方法,现在HTTPS被广泛用于互联网上安全敏感的通信。 Apache实现HTTPS需要使用mod_ssl模块,无论采用下属那种方式配置HTTPS首先要安装该模块。(编译时,-enable-ssl) yum -y install mod_sslCA颁发证书 自建一个CA cd /etc/pki/tls 编辑 f 根据自己的需要修改 CA_default dir = /etc/pki/CA # Where everything is kept . req_distinguished_name countryName = Country Name (2 letter code)countryName_default = CNcountryName_min = 2countryName_max = 2stateOrProvinceName = State or Province Name (full name)stateOrProvinceName_default = BeijinglocalityName = Locality Name (eg, city)localityName_default = BanizationName = Organization Name (eg, company)0.organizationName_default = EDIorganizationalUnitName = Organizational Unit Name (eg, section)organizationalUnitName_default = Tech.cd /etc/pki/CA(umask 077; openssl genrsa 1024 private/cakey.pem) openssl req -new -x509 -key private/cakey.pem -out cacert.crt -days 365 /自签一个CA颁发机构 mkdir certs crl newcerts /创建CA应该有的文件和目录,根据/etc/pki/tls/f文件里的要求 touch index.txt serial echo 01 serial 创建Web需要的证书 cd /etc/httpd/ mkdir ssl openssl genrsa 1024 httpd.key openssl req -new -key httpd.key -out httpd.csr openssl ca -in httpd.csr -out httpd.crt vim /etc/httpd/conf.d/ssl.conf /编辑证书和私钥存放位置 SSLCertificateFile /etc/httpd/ssl/httpd.crt /证书 SSLCertificateKeyFile /etc/httpd/ssl/httpd.key /私钥 7.客户端配置 在Apache中默认情况下,允许所有客户端对已经配置好的网站进行访问。通过Order、Allow from、Deny from3个参数可允许或指定客户端对网站中子目录或文件的访问。 Order参数决定是默认动作及允许或阻止的优先级。(1)Order allow,deny默认拒绝所有访问。当Allow from字段和Deny from冲突时,Deny from优先。(2)Order deny,allow默认允许所有访问。当Allow from字段和Deny from冲突时,Allow from优先。Example: /对/home/*/public_html目录进行配置 AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Order allow,deny /定义对客户端进行访问控制时默认动作为阻止客户端访问,Deny from优先。 Allow from all /允许所有客户端访问 Order deny,allow Deny from all (8)用户认证 Apache在默认情况下,允许客户端通过匿名访问。Apache可以实现基本身份验证(使用明文方式传输密码)和摘要式身份验证(使用Hash算法传送密码)。基本身份验证有良好的支持,基本身份验证的安全性可通过使用HTTPS的方法保护。 使用验证时,认证客户来源可以是htpasswd工具生成的密码文件、LDAP服务器、MySQL、微软活动目录等。(1)认证用户来源使用htpasswd工具生成的密码文件。 使用密码文件的稳健配置方法很简单,但由于该命令生成的是一个文本文件,所以不适用于用户比较多的Web服务器。配置Apache认证用户来源使用htpasswd工具生成的密码文件的操作如下。使用htpasswd命令生成用户及密码(这里的用户名及密码与系统用户名没有任何关系) htpasswd -cm /etc/httpd/.webusers tony /创建一个保存用户名及密码的文件(/etc/httpd/.webusers),并在其中增加一个名为 tony的用户,使用MD5算法加密密码 htpasswd -m /etc/httpd/.webusers /在已存在用户名和密码的文件中增加一个名为andy的用户。 修改现有用户的密码使用-m参数,htpasswd -m /etc/httpd/.webusers tony 删除存在用户使用-D选项,htpasswd -D /etc/httpd/.webusers tony对指定目录或文件使用基本身份验证。 /对放置网页的存放目录进行配置 Options FollowSymLinks AllowOverride None AuthName TestAuth /指定用户认证的域 AuthType Basic /使用基本身份验证 AuthUserFile .webusers /指定保存用户名及密码的文件 Require valid-user /指定文件中的所有用户均可以访问该目录 #Requre User tony /指定文件中只有tony可以访问该目录如果认证的用户较多时,可以通过建立一个分组文件,将htpasswd命令生成的用户名及密码保存文件中的用户进行分组。 cat .webgroup /组文件格式如下hr:david jerrytech:andy配置文件如下 Options FollowSymLinks AllowOverride authconfig AuthName TestAuth AuthType Basic AuthUserFile .webusers AuthGroupFile .webgroup /指定用户组文件 Require group tech /指定可访问的用户(2)认证用户来源使用Mysql数据库 使用htpasswd工具生成的密码文件主要适用于一些用户量较小的网站,而对于用户量比较大的网站将认证用户保存在数据库中可以发挥数据库灵活性等特点。配置如下安装Mysql yum install -y mysql-server mysql-devel httpd-devel mod_auth_mysql /安装必要的安装包 service mysql start /启动数据库服务 mysqladmin -u root password redhat /创建Mysql管理员及密码使用root用户登录数据库,建立用户认证用户的数据库、表,并加入用户。 #mysql -u root -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 4Server version: 5.0.77 Source distributionType help; or h for help. Type c to clear the buffer.mysql create database apacheusers; /建立用于保存用户的数据库apac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论