httpd配置说明(3)

接着上一期的继续向下讲解,这一期比较有干货讲的都是经常用到的玩意,比如https的配置,虚拟主机的配置,以及日志的定义!

首先说说虚拟主机的玩法:

在httpd2.4中不像2.2可以定义在httpd.conf之中,在httpd2.4中完全在/etc/httpd/conf.d下面自己新建一个以.conf结尾的文件进行定义。不过要注意的是在定义虚拟主机的时候首先注释掉DocumentRoot的内容然后再定义虚拟主机。

虚拟主机有三种解决的方案:

  • 基于IP:为每个虚拟主机准备至少一个IP地址
  • 基于端口:为每个虚拟主机准备至少一个专用端口
  • 基于主机名(hostname):为每个虚拟主机准备至少一个专用hostname

注:这三种解决方案可以完全混用,比如:我定义了两个不同IP地址的虚拟主机也定义了基于主机名不同的虚拟主机也是可以的!

在虚拟主机的定义可以定义专有的访问控制和基本选项的,如果没有定义访问控制,那会安装主配置文件的来进行定义,所以大家大可放行可以不用定义太多!

关于定义的语法:

<VirtualHost “ip:port”> 这里开始定义基本的配置引号中间写好端口加上地址也可以*:80这样监听在每个地址的80端口(端口可以改为其他)
ServerName NAME 填写主机名域名或者填个IP地址也行定义主机名用!
DocumentRoot /PATH/TO/SOMEFILE 定义网站的文件路径;
ServerAlias ALIAS 定义虚拟主机的别名,这个觉得没必要也可以不定义!
Errorlog /PATH/TO/SOMEFILE 这个是定义错误日志存放位置!也可以不定义这样会直接按照主配置文件定义的来放置了!
Customlog PATH/TO/SOMEFILE MODEL 这个是定义访问日志的存放位置!也可以不进行定义这样直接按照住配置文件定义的来放置了!
<Directory ”/PATH/TO/SOMEFILE”> 定义访问控制,引号中定义的是文件范围,必须小于定义的网站文件路径!其实也可以不用定义这样就按照主配置文件的内容进行。配置的内容在上一期说过了!
</Directory>
</VirtualHost>


马上带来的就是定义日志了:

日志在网站中非常关键!在大多数的公司的都是通过日志来分析网站访问人数以及最喜欢点击的文章等相关信息,如果是电商网站也能分析出最近最火的商品。所以知道关于日志的关键了吧?这个是大数据必须用到的数据!

首先看看错误日志的定义:

httpd10

错误日志定义比较简单,只要定义完放置的文件路径即可。不过我比较喜欢统一房子啊/var/log/apache定义一个。错误日志定义了关于网站错误的日志,比如访问错误,跳转页找不到后台的server等等!一般你网站运行有问题的时候可以先看看!

接下来看看访问日志,这个比较重要哦!

httpd11

划着淡红色(应该是这种颜色吧)的线是定义了访问日志的格式,格式定义了有两种,以LogFormat开头的定义。不过这里支持你自己进行定义,只要照葫芦画瓢即可定义。下面是关于定义的常用参数:如果需要详细的可以在httpd.apache.org中寻找答案。

  • %h 客户端IP地址
  • %l Remote logname (from indentd,if supplied) 如果这里是-表示为空!客户端请求的登录名
  • %u Remote user:用户登录认证名(from auth; maybe bogus ifreturn status (%s) is 401)如果出现-表示为空
  • %t Time the request was received (standard English format) 服务器收到的请求时间
  • %r first line of request 请求报文的首行信息(method、url verion)
  • %s 响应的状态码(比如404、403……)
  • %b 响应报文的大小,单位是字节,不包括响应报文首部
  • %{REFERER}i 请求报文档中“referer”首部的值;当前资源访问入口,即从哪个页面中的超链接跳转而来?还是直接输入URL进入?
  • %{user-Agent}i 请求报文当中“user-Agent”首部的值;即发出请求用到的应用程序(比如浏览器、curl等)

按照先从左往右进行排序定义!

再来看看划着白线的内容,就是定义访问日志文件的所放位置,并且后面更上格式,如默认的:common、combined不过这个可以自己DIY耶!


最后说说https的配置:

配置https需要你有openssl的玩法这个需要自己搭建CA服务器,当然你很有钱可以也可以向CA机构进行购买证书!有了CA服务器(如果是私有的)然后自己给自己发证书,然后签证。(这个我打算放到openssl进行说明)

不过如果要设置https的话首先你必须需要准备httpd的一个模块。如果你是编译安装的话别忘了把这个模块编译进去。非编译安装的使用命令:httpd -M | grep “ssl”查看有没有这个模块没有的话直接:yum install mod_ssl

安装完毕以后在/etc/httpd/conf.modules.d目录下的00-ssl.conf 定义了ssl模块的所有配置(编译安装的话在/etc/httpd/extra/httpd-ssl.conf中),如果想要其生效并且不想做过多配置可以定义如下内容:

  • SSLCertificateFile 证书文件位置(在httpd中给客户端看的颁发机构)文件.crt结尾
  • SSLCertificatekeyFile 证书文件私钥位置.key结尾的
  • DocumentRoot 定义虚拟主机的目录(提供https服务的)
  • ServerName 主机名

找到这4句话进行定义然后重启httpd即可!

如果你是编译安装的httpd2.4还要在主配置文件干这些内容:

编译安装4需要在/etc/httpd.conf中需要解除以下注释:

  • socache_shmcb_module modules/mod_socache_shmcb.so
  • slotmem_shm_module modules/mod_slotmem_shm.so 可以不用解除注释能启动
  • ssl_module modules/mod_ssl.so

在这里开启模块脚本

  • #secure (SSL/TLS) connections
  • include /etc/httpd/extra/httpd-ssl.conf

好了上述https内容只是讲解了后半段的配置,但是前半段配置CA服务器等内容我们在openssl详解进行说明!

Comments

Leave a Reply

Your email address will not be published. Name and email are required