设为首页 收藏本站
查看: 1286|回复: 0

[经验分享] centos 6.7之httpd配置

[复制链接]

尚未签到

发表于 2018-4-25 12:33:31 | 显示全部楼层 |阅读模式
  前言:
  http在osi中的位置:
在osi的七层模型中,http(hyper text tranfer protocol)位于第七层应用层,是一种本地与网络主机连接传输的协议,其部分基于位于第四层传输层的TCP协议(还有UDP协议),而TCP协议又是基于第三层网络层的IP协议。
  

  http与httpd的关系
  实现httpd应用协议的web服务器现在主流有三种:
  httpd,也就是大家熟知的apache服务中的主程序
  ngnix
  lighttpd

  

  -------------------------分割线--------------------------
  

  centos 6默认httpd版本为2.2版本,centos 7默认httpd为2.4版本
  

  一、httpd的安装
yum -y install httpd  a.通过rpm -ql httpd命令可以观察
  1.配置文件:/etc/httpd/conf/httpd.conf

  其中额外的配置文件目录:/etc/httpd/conf.d/*.conf,适用配置虚拟主机等
  2.程序文件:/usr/sbin/httpd

  3.日志文件:/var/log/httpd

  4.模块文件:/usr/lib64/httpd/modules

  b.httpd服务相关状态及启用

  service httpd start  //启动httpd服务

  service httpd restart //重启httpd服务

  service httpd reload  //重读httpd服务配置

  chkconfig httpd on|off //开机自启或关闭httpd服务

  

  二、httpd的基本配置
  a.监听端口修改
  1.vim /etc/httpd/conf/httpd.conf

  2.搜索Listen

  3.修改格式Listen [IP:] PORT
  4.实例:Listen 172.16.45.67:8080

  5.httpd -t检查语法

  6.service httpd reload|restart

  注意点:Listen中的如果要添加ip,一定为本机ip

  修改ip后,一定要进行service restart

  同一个端口不能出现两个不同的ip

  

  b.DSO:Dynamic shared objects动态共享模块
  1.vim /etc/httpd/conf/httpd.conf
  2.搜索LoadModule

  3.不需要的模块可进行注释

  4.模块切换:修改/etc/sysconfig/httpd中的HTTPD值

  HTTPD=/usr/sbin/httpd|httpd.worker|httpd.event
  5.查看静态编译模块:httpd -l

  

  c.站点访问控制
  1.基于ip地址的访问控制

  vim /etc/httpd/conf/httpd.conf
  搜索DocumentRoot找到根目录
  然后添加如下代码
<Directory "PATH/TO/SOME_DIR">  //PATH路径为根目录地址
        Order allow,deny
    Allow from 172.16
    Deny from 172.16.45.72
    Deny from all
</Directory>  其中ip来源请求是遵循最佳匹配法则机制

  如果上实例:172.16.45.72不可访问,

  172.16.45.01可以访问

  192.168.1.10不可访问
  2.基于文件系统和用户进行控制

        vim /etc/httpd/conf/httpd.conf
        搜索DocumentRoot找到根目录
         然后添加如下代码
<Directory "/PATH/TO/SOME_DIR">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "SOME_STRING_HERE"  //显示给用户的信息
    AuthUserFile "/PATH/TO/HT_PASSWD_FILE"     //AuthUserFile "/etc/httpd/conf/.htpasswd "
    Require user user1 user2...   //也可以使用Require valid-user 表示所有用户都合法
</Directory>  其中用户密码可以使用htpasswd命令来生成

  htpasswd [options] /PATH/TO/HT_PASSWD_FILE USERNAME
  3.基于组账号进行控制

  设置同用户账号设置,但在代码中新加入了组的控制

<Directory "/PATH/TO/SOME_DIR">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "SOME_STRING_HERE"
    AuthUserFile "/PATH/TO/HT_PASSWD_FILE"
    AuthGroupFile "/PATH/TO/HT_GROUP-FILE"    //authgroupfile "/etc/httpd/conf/.groupwd"
            //然后在/etc/httpd/conf/.groupwd编写 mygroup:user1 user2
    Require group grp1 grp2...      //grp1填写mygroup,与上述文件中内容的名称一致
</Directory>  

  d.定义站点别名

  vim /etc/httpd/conf/httpd.conf
  别名定义格式:Alias /URL/ "/PATH/TO/SOME_DIR/"
  实例:Alias /images/ "/var/www/html/pictures/"
  其中"/var/www/html"为DocumentRoot值
  

  说明:其中images并非为系统具体目录,即/var/www/html/pictures/存在一个logo.jpg的文件时,使用172.16.45.67/images/logo.jpg可以访问到该文件,images即相当于是/var/www/html/pictures
  

  e.日志设定

  日志格式:LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h:remote host
%l:remote logname(from identd)
%u:remote user(from auth)
%t:time the request was received(stand english format)
"%r":first line request
%s:status code for request tha got internally redirected
%b:size of response in bytes,excluding HTTP headers
"%{Referer}i":The contents of Referer header line(s) in the request sent to the server
        //发送到服务器的请求引用者的首部的内容 i表示取其值
"%{User-Agent}i":The contents of User-Agent header line(s) in the request sent to the server
        //客户端的浏览器类型  

  f.虚拟主机设定
  虚拟主机设定有用种:基于ip,基于端口,基于FQDN,三种设定基本类似
  本文以基于ip作示例:

  1.vim /etc/httpd/conf.d/vhost1.conf  //不在conf/httpd.conf中直接修改
  修改NameVirtualHost值,其中ip监听地址为本机地址
  2.在vhost1.conf中加入以下代码

<VirtualHost 172.16.45.71:80>
    ServerName www1.magedu.com
    DocumentRoot /tmp/vhosts/www1
</VirtualHost>  在/tmp/vhost/www1文件夹中加入index.html,并写入内容,访问172.16.45.71即可查看到内容

  

  

  

  

  

  

  

  练习:写一个脚本,批量生成10个FQDN虚拟主机配置:
  要求配置文件为/etc/httpd/conf.d/virhost#.conf
#/bin/bash
#
#
Ip=$(ifconfig | head -n 3 | grep "inet addr" | awk -F: '{print $2}'| awk '{print $1}')
    //提取本机ip
echo "your IP is $Ip"
cp /etc/httpd/conf/httpd.conf{,.bak}
    //备份httpd配置文件
sed -i "s@.*\<NameVirtualHost\>.*@NameVirtualHost $Ip:80@" /etc/httpd/conf/httpd.conf
    //更改NameVirtualHost值,启用虚拟主机
Virtualhost() {
    echo "<VirtualHost $Ip:80>" >/etc/httpd/conf.d/virhost$1.conf
    echo -e "\tServerName www$1.chunlanyy.com" >>/etc/httpd/conf.d/virhost$1.conf
    echo -e "\tDocumentRoot /tmp/virhost/www$1" >>/etc/httpd/conf.d/virhost$1.conf
    mkdir -p /tmp/vhost/www$1
    echo "</VirtualHost>" >>/etc/httpd/conf.d/virhost$1.conf
}
        //函数进行配置文件的写入
Hostfile(){
    mkdir -p /tmp/virhost/www$1/
    touch /tmp/virhost/www$1/index.html
    echo "<h1>www$1 site</h1>" >/tmp/virhost/www$1/index.html
}
        //函数进行访问显示内容的写入
for I in {1..10};do
    Virtualhost $I
    Hostfile $I
done
echo "virtualhosts has setup"  

  修改172.16.45.72主机的/etc/hosts内容
  172.16.45.67 www1.chunlanyy.com
  172.16.45.67 www2.chunlanyy.com
  ...
  依次将10个名称写完

  然后再使用172.16.45.72主机进行访问,结果如下
[root@chunlanyy tmp]# curl www{1..10}.chunlanyy.com
<h1>www1 site</h1>
<h1>www2 site</h1>
<h1>www3 site</h1>
<h1>www4 site</h1>
<h1>www5 site</h1>
<h1>www6 site</h1>
<h1>www7 site</h1>
<h1>www8 site</h1>
<h1>www9 site</h1>
<h1>www10 site</h1>  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-451899-1-1.html 上篇帖子: CentOS7 使用的定制 下篇帖子: centos 6.5 DNS服务器搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表