httpd服务的简单配置

大纲:


 1.httpd服务的安装

 2.主配置文件/etc/httpd/conf/httpd.conf常见选项简介

 3.basic认证的实现

 4.基于ipportFQDN的虚拟主机的实现

 5.实现ssl加密的http服务

 6.简单的压力测试

 7.关于httpd2.2httpd2.4之间的差异会贯穿在整篇文章中

一、安装httpd服务

[[email protected] ~]#yum -y install httpd 
[[email protected] ~]# rpm -q httpd
httpd-2.4.6-40.el7.centos.x86_64
[[email protected] ~]# tree /etc/httpd/   #httpd2.4的安装后的文件结构
/etc/httpd/
├── conf
│   ├── httpd.conf
│   └── magic
├── conf.d
│   ├── autoindex.conf
│   ├── manual.conf
│   ├── php.conf
│   ├── README
│   ├── userdir.conf
│   ├── welcome.conf
├── conf.modules.d
│   ├── 00-base.conf          #不同于2.2的是,LoadModule等大部分都在此文件中
│   ├── 00-dav.conf
│   ├── 00-lua.conf
│   ├── 00-mpm.conf
│   ├── 00-proxy.conf
│   ├── 00-systemd.conf
│   ├── 01-cgi.conf
│   └── 10-php.conf
├── logs -> ../../var/log/httpd
├── modules -> ../../usr/lib64/httpd/modules
└── run -> /run/httpd

[[email protected] ~]# tree /etc/httpd/  #httpd2.4的安装后的文件结构
   /etc/httpd/
   ├── conf
   │   ├── httpd.conf
   │   └── magic
   ├── conf.d
   │   ├── mod_dnssd.conf
   │   ├── php.conf
   │   ├── README
   │   └── welcome.conf
   ├── logs -> ../../var/log/httpd
   ├── modules -> ../../usr/lib64/httpd/modules
   └── run -> ../../var/run/httpd

httpd的主要配置文件有几类:

应用程序的文件:/usr/sbin/httpd

配置文件:/etc/httpd/conf.d/*.conf和/etc/httpd/conf/httpd.conf

日志文件:/var/log/httpd

web资源主目录:/var/www/html

 2.主配置文件/etc/httpd/conf/httpd.conf常见选项简介

<Directory>中“基于源地址”实现访问控制

1.options

后跟一个或多个空白字符分隔的"选项“列表;

Indexes:指明的URL路径下不存在和定义的主页面资源相符的资源文件时,返回索引列表给用户

FollowSymLinks:允许跟踪符号链接文件所指向的源文件

None:

All;

2.AllowOverride

与访问控制相关的那些指令可以放在,htaccess文件(每个目录下都可以有一个)中:

All;

None:

3.order和allow,deny

order:定义生效次序;写在后面的表示默认法则;

Allow  from, Deny from

来源地址:

IP

NetAddr:

172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

访问控制关键字的改变:

httpd2.2:

<Directory "/var/www/icons">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny       
    Allow from all
</Directory>

httpd2.4:

<Directory /var/www/html/admin>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted   
</Directory>

4.更改DocumentRoot路径

在httpd2.2中直接更改DocumentRoot的路径即可,httpd2.4中需要更改DocumentRoot后,还需加上对应的对<Didrectory  /path/to >的定义才可。

5,定义站点主页面: 这里可以自定义,即使叫做haha.html

DirectoryIndex  index.html

6.定义路径别名

格式:Alias  /URL/   "/PATH/TO/SOMEDIR/" 前后的斜线最好都有且其有无应该保持一致。

eg;Alias /download/ "/rpm/pubs/"  download是相对于ServerRoot的;后面的目录是文件系统路径,且不在

当你访问download时会调转显示/rpm/pubs下的文件内容

7.日志设定

日志类型: 访问类型 和 错误日志

错误日志;

ErrorLog logs/error_log

LogLevel warn

possible values include:debug,info,notice,warn,error,crit,alert,emerg

访问日志:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

CustomLog logs/access_log combined

日志格式中定义的宏选项表示的含义:

%h;客户端的Ip地址

%l:Remote User:通常为一个减号

%u:Remote user:非为登录访问时,其为一个减号

%t:服务器收到请求的时间

%r:即便是请求报文的首行,记录了此次请求的方法,“URL”以及协议版本

%>s:响应状态码

%b:响应报文的大小,单位是字节,不包括响应报文的http首部

%{Referer}i:请求报文中首部“referer”的值,即从哪个页面中的超链接跳转至当前页面的;

%{User-agent}:请求报文中首部“User-Agent”的值,即发出请求的应用程序;

8,status页面

1.下面的模块需加载

LoadModule status_module modules/mod_status.so

2.配置选项

httpd-2.2

<Location /server-status>

SetHandler server-status

Order allow,deny

Allow from all

</Location>

httpd-2.4:

<Location /status>

SetHandler server-status

Require all granted         注意和上面2,2中关于访问控制的区别

</Location>

3.basic认证的实现

方法:

a.配置认证的设定

b.利用htpasswd命令生成认证用户和认证用户存放的文件

c.验证

a.编辑/etc/httpd/conf/httpd.conf,添加此配置

<Directory /var/www/html/admin>
  options none
  allowoverride none  
  AuthType basic                   #认证方式
  AuthName "this is root admin"    #认证提示语
  AuthUserFile "/etc/httpd/conf/.htpasswd"    #认证用户的存放文件
  AuthGroupFile "/etc/httpd/conf/.htgroup"   #认证用户组的文件的位置
  require user jay          #如果想让文件中所有的用户都生效可使用 require valid-user
  require group tom         
</Directory>

b.提供认证用户

[[email protected] httpd]# htpasswd -c -m /etc/httpd/conf/.htpasswd jay #c选项是创建文件,仅第一次使用,否则会覆盖之前的内容
[[email protected] httpd]# htpasswd -m /etc/httpd/conf/.htpasswd tom 
[[email protected] httpd]# vim /etc/httpd/conf/.htgroup  # 直接编辑文件即可
tom:tom

c.认证

四、虚拟主机

三种实现方案:

基于IP:

为每个虚拟主机准备至少一个IP地址

基于port:

为每个虚拟主机至少使用一个独立的port

基于FQDN:在httpdd2.2中使用时要加NameVirtualHost IP:80,httpd-2.4不用添加

为每个虚拟主机使用至少一个FQDN;

注意:一般虚拟机不要同中心主机混用,因此要使用虚拟主机,得先禁用‘main’主机;

禁用方法:注释掉配置文件中DocumentRoot 这一行即可

方法:1.注释中心主机

2.配置虚拟主机文件

3.进行验证

httpd2.2和httpd2.4的区别:

  1.httpd2.2基于域名的虚拟主机时,需要加上NameVirtualHost IP:80,httpd2.4不需要

  2.httpd2.4做虚拟主机时需要加上<directory /path/to>的定义,httpd2.2不需要

  1. 注释中心主机
 [[email protected] httpd]# vim /etc/httpd/conf/httpd.conf 
   #DocumentRoot "/var/www/html"

2.单独编辑一个vhost.conf文件

[[email protected] httpd]# vim /etc/httpd/conf.d/vhost.conf
#NameVirtualHost 10.1.19.1 80  如果2.2的话基于域名的虚拟主机时需要加上此项,2.4不用
<virtualhost 10.1.19.1:80>  
 servername www.a.com
 documentroot /www/a/
 <Directory /www/a>           
   options none
   allowoverride none
   require all granted
 </Directory>
</virtualhost> 

<virtualhost 10.1.19.12:80>
 servername www.b.com
 documentroot /www/b/
 <Directory /www/b>
   options none
   allowoverride none
   require all granted
 </Directory>
</virtualhost> 

<virtualhost 10.1.19.1:8080>
 servername www.c.com
 documentroot /www/c/
 <Directory /www/c>
   options none
   allowoverride none
   require all granted
 </Directory>
</virtualhost> 

<virtualhost 10.1.19.12:80>
 servername www.d.com
 documentroot /www/d/
 <Directory /www/d>
   options none
   allowoverride none
   require all granted
 </Directory>
</virtualhost>

3.编辑hosts文件,让本机可以解析域名

[[email protected] conf.d]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 centos7-1
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.19.1  www.a.com
10.1.19.1 www.b.com
10.1.19.1 www.d.com

4.测试

[[email protected] conf.d]# curl http://www.a.com
a
[[email protected] conf.d]# curl http://www.a.com:8080
c
[[email protected] conf.d]# curl http://www.b.com/
b
[[email protected] conf.d]# curl http://www.d.com/
d

5.实现ssl加密的http服务 


过程:

1.配置CA

2.配置http服务支持ssl

3.测试

1.配置ssl

CA服务端,本次实验都在一台机器上:

[[email protected] ~]# cd /etc/pki/CA/
[[email protected] CA]# touch index.txt serial 
[[email protected] CA]# echo 01> serial

生成私钥:

[[email protected] CA]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 1024)
Generating RSA private key, 1024 bit long modulus
..............++++++
...++++++
e is 65537 (0x10001)
[[email protected] CA]# tree 
.
├── certs
├── crl
├── index.txt
├── newcerts
├── private
│   └── cakey.pem
└── serial

生成自签证书:

[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out ./cacert.pem -days 365
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:ops
Common Name (eg, your name or your server‘s hostname) []:magedu.com
Email Address []:

生成httpd私钥
[[email protected] ~]# mkdir /etc/httpd/ssl
[[email protected] httpd]# cd /etc/httpd/ssl
[[email protected] httpd]# (umask 077;openssl genrsa -out http.key 1024)
Generating RSA private key, 1024 bit long modulus
......++++++
.++++++
e is 65537 (0x10001)

生成CA请求:
[[email protected] httpd]# openssl req  -new -key http.key -out http.csr -days 365
 
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu 
Organizational Unit Name (eg, section) []:ops
Common Name (eg, your name or your server‘s hostname) []:magedu.com
Email Address []:
 
CA认证请求:   因为是同一台机器,就不复制了
[[email protected]-1 httpd]# openssl ca -in http.csr -out http.crt -days 365
Certificate is to be certified until Nov  7 09:56:26 2017 GMT (365 days)
Sign the certificate? [y/n]:y
 
复制crt文件到指定位置:
 
[[email protected] ssl]# ls
http.crt  http.key

2.配置http服务支持ssl

[[email protected] ~]# rpm -q mod_ssl
package mod_ssl is not installed
[[email protected] ~]# yum -y install mod_ssl
[[email protected] ~]# rpm -ql mod_ssl
/etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.modules.d/00-ssl.conf
/usr/lib64/httpd/modules/mod_ssl.so
/usr/libexec/httpd-ssl-pass-dialog
/var/cache/httpd/ssl

3.配置ssl.conf

[[email protected] ~]# vim /etc/httpd/conf.d/ssl.conf 
ServerName magedu.com:443
SSLCertificateFile /etc/httpd/ssl/http.crt
SSLCertificateKeyFile /etc/httpd/ssl/http.key
[[email protected] ~]# httpd -t 
Syntax OK
[[email protected] ~]# service httpd restart 
[[email protected] conf.d]# ss -tan | grep 443
LISTEN     0      128         :::443                     :::*

4.测试

  1. 将服务器CA根证书导入到浏览器,然后访问;
  2. 测试成功了

时间: 2024-10-12 13:42:11

httpd服务的简单配置的相关文章

【初学菜鸟作--邮件服务的简单配置案例】

邮件服务器的配置以及使用 实验一:                    实验目的:简单搭建出邮件服务器并测试其可用性                    实验环境:DNS服务器一台,安装有Portfix的邮件服务器一台 实验步骤: 一.邮件的发送(SMTP) 1.在邮件服务器配置主机名,ip,并安装portfix并启动 [[email protected]~]# tail -2 /etc/sysconfig/network HOSTNAME=mail.tarena.com   [[email

DNS服务器之简单配置(一)

名词解释: 域名: 域名是域名系统名字空间中,从当前节点到根节点的路径上所有节点标记的点分顺序连接. 域: 域是指域名系统名字空间中的一个子集,也就是树形结构名字空间中的一颗子树.这个子树根节点的域名就是该域的名字, 域的级别: 顶级域(TLD, Top Level Domain)是指域名系统名字空间中根节点下最顶层的域.顶级域也称一级域,顶级域的下级就是二级域,二级域的下级就是三级域,以此类推.每个域都是其上级域的子域.最早的顶级域名,也是现在说的国际域名,按照用途分为的7个大类: .com:

Linux服务的简单配置(homework)

Linux服务也学习一个礼拜啦,趁这闲暇之际,归纳一下这周所学的服务. 应用环境:Redhat 5.9 一.DHCP DHCP是动态主机配置协议,可自动分配入网参数,实现各客户机IP的自动获取 1.为服务器配置一个固定的Ip地址如192.168.4.2 2.确认已安装dhcp软件包 3.建立dhcpd.conf配置文件. [[email protected] ~]# vim/etc/dhcpd.conf subnet 192.168.4.0 netmask 255.255.255.0 { opt

Linux CentOS6.3 上 vsftp 服务的简单配置

1.安装vsftp yum -y install vstall 2.修改配置文件 vi /etc/vsftpd/vsftpd.conf 需修改(没有则添加)的配置如下: anonymous_enable=YES       -- 开启匿名用户访问,匿名用户可以访问的目录默认为 /var/pub chroot_local_user = YES        -- 把用户限制在家目录下 pasv_enable=YES                        --开启被动模式 pasv_min_

httpd服务配置(未完待续)

httpd服务的详细配置 程序环境 主配置文件: /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf 服务脚本: /etc/rc.d/init.d/httpd 配置文件:/etc/sysconfig/httpd 主程序文件: /usr/sbin/httpd #默认为prefork,后边介绍 /usr/sbin/httpd.event /usr/sbin/httpd.worker 日志文件目录: /var/log/httpd access_log

httpd服务的访问控制

web 网站服务(二) 1:在web(一)我们发现,在访问AWSstats日志分析系统时并不需要提供账号和密码,就可以登录系统,而我们只需要知道对应的网址就可以看到web站点的访问情况,任何人都可以看这样的不足就是会给服务器的安全带来隐患. 2:所以,为了解决上述的不足,我们接下来就是要为网站添加特定的权限,权限设置有两种方式:客户机地址限制和用户授权限制,这两种访问控制方式都应用于httpd.conf配置文件的目录区域<Directory 目录位置>......</ Directory

Linux 中httpd服务

httpd是Apache超文本传输协议(HTTP)服务器的主程序,直接执行程序即可启动该服务. 命令参数 httpd -h可查看命令选项 -M查看静态编译及动态装载的模块(动态模块加载:不需重启即生效) -c<httpd指令> 在读取配置文件前,先执行选项中的指令. -C<httpd指令> 在读取配置文件后,再执行选项中的指令. -d<服务器根目录> 指定服务器的根目录. -D<设定文件参数> 指定要传入配置文件的参数. -f<设定文件> 指定配

Linux之Web服务(2)Httpd服务配置之二

Linux之Web服务(2)Httpd服务配置之二 前言 在上一篇通过一些简单的案例或说明来介绍了部分关于Httpd2.4中httpd.conf配置文件中的配置选项及对应的功能.主要是对访问控制和在处理对指定目录或文件进行访问控制的一些安全问题性的处理.但是一直没有提到访问控制的具体讲解,本篇列出访问控制的具体使用选项和功能,以及其它高级配置. 1.Httpd2.4 文档访问授权具体参数 前提:文档访问授权选项配置只适合在以下标签中生效: <Directory >  <FIles>

httpd服务之虚拟主机、访问控制、https配置详解

前言 上文讲解了http协议及httpd的一些特性,是学习web服务需要掌握的一些基础知识,接下来让我们进一步了解httpd相关功能的配置,本文讲解的是虚拟主机,访问控制及https等功能的配置. httpd之虚拟主机 虚拟主机共分为三种模式:基于IP.基于端口.基于主机名(FQDN) 实验环境介绍 开始之前,先介绍一下httpd在CentOS6.6版本及文件: 版本:      httpd-2.2.15(CentOS7升级为2.4系列) 配置文件:         /etc/httpd/con