微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

centos 6.7之httpd配置

前言:

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-yinstallhttpd

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路径为根目录地址
Orderallow,deny
Allowfrom172.16
Denyfrom172.16.45.72
Denyfromall
</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">
OptionsNone
AllowOverrideNone
AuthTypeBasic
AuthName"SOME_STRING_HERE"//显示用户的信息
AuthUserFile"/PATH/TO/HT_PASSWD_FILE"//AuthUserFile"/etc/httpd/conf/.htpasswd"
Requireuseruser1user2...//也可以使用Requirevalid-user表示所有用户都合法
</Directory>

其中用户密码可以使用htpasswd命令来生成

htpasswd [options] /PATH/TO/HT_PASSWD_FILE USERNAME

3.基于组账号进行控制

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

<Directory"/PATH/TO/SOME_DIR">
OptionsNone
AllowOverrideNone
AuthTypeBasic
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:user1user2
Requiregroupgrp1grp2...//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:remotehost
%l:remotelogname(fromidentd)
%u:remoteuser(fromauth)
%t:timetherequestwasreceived(standenglishformat)
"%r":firstlinerequest
%s:statuscodeforrequestthagotinternallyredirected
%b:sizeofresponseinbytes,excludingHTTPheaders
"%{Referer}i":ThecontentsofRefererheaderline(s)intherequestsenttotheserver
//发送到服务器的请求引用者的首部的内容i表示取其值
"%{User-Agent}i":ThecontentsofUser-Agentheaderline(s)intherequestsenttotheserver
//客户端的浏览器类型


f.虚拟主机设定

虚拟主机设定有用种:基于ip,基于端口,基于FQDN,三种设定基本类似

本文以基于ip作示例:

1.vim /etc/httpd/conf.d/vhost1.conf //不在conf/httpd.conf中直接修改

修改NameVirtualHost值,其中ip监听地址为本机地址

2.在vhost1.conf中加入以下代码

<VirtualHost172.16.45.71:80>
ServerNamewww1.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-n3|grep"inetaddr"|awk-F:'{print$2}'|awk'{print$1}')
//提取本机IP
echo"yourIPis$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"\tServerNamewww$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$1site</h1>">/tmp/virhost/www$1/index.html
}
//函数进行访问显示内容的写入
forIin{1..10};do
Virtualhost$I
Hostfile$I
done
echo"virtualhostshassetup"


修改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@chunlanyytmp]#curlwww{1..10}.chunlanyy.com
<h1>www1site</h1>
<h1>www2site</h1>
<h1>www3site</h1>
<h1>www4site</h1>
<h1>www5site</h1>
<h1>www6site</h1>
<h1>www7site</h1>
<h1>www8site</h1>
<h1>www9site</h1>
<h1>www10site</h1>

原文地址:https://www.jb51.cc/centos/381641.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。