热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

httpd服务的简单配置

大纲:1.httpd服务的安装2.主配置文件etchttpdconfhttpd.conf常见选项简介3.basic认证的实现4.基于ip,port和FQDN的虚拟主机的实现5.实现

 



 

大纲:


 1.httpd服务的安装


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


 3.basic认证的实现


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


 5.实现ssl加密的http服务


 6.简单的压力测试


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



 

一、安装httpd服务

[root@centos7-1 ~]#yum -y install httpd 
[root@centos7-1 ~]# rpm -q httpd
httpd-2.4.6-40.el7.centos.x86_64
[root@centos7-1 ~]# 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
[root@Cent6 ~]# 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常见选项简介

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

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:


    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny       
    Allow from all

httpd2.4:


    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted   


4.更改DocumentRoot路径

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


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

    

    SetHandler server-status

    Order allow,deny        

    Allow from all

    

    httpd-2.4:

       

    SetHandler server-status

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

       

     


3.basic认证的实现

 方法:

    a.配置认证的设定

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

    c.验证

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


  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         

b.提供认证用户

[root@centos7-1 httpd]# htpasswd -c -m /etc/httpd/conf/.htpasswd jay #c选项是创建文件,仅第一次使用,否则会覆盖之前的内容
[root@centos7-1 httpd]# htpasswd -m /etc/httpd/conf/.htpasswd tom 
[root@centos7-1 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做虚拟主机时需要加上的定义,httpd2.2不需要


  1. 注释中心主机


 [root@centos7-1 httpd]# vim /etc/httpd/conf/httpd.conf 
   #DocumentRoot "/var/www/html"


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

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

 servername www.b.com
 documentroot /www/b/
 
   options none
   allowoverride none
   require all granted
 
 

 servername www.c.com
 documentroot /www/c/
 
   options none
   allowoverride none
   require all granted
 
 

 servername www.d.com
 documentroot /www/d/
 
   options none
   allowoverride none
   require all granted
 

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

[root@centos7-1 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.测试

[root@centos7-1 conf.d]# curl http://www.a.com
a
[root@centos7-1 conf.d]# curl http://www.a.com:8080
c
[root@centos7-1 conf.d]# curl http://www.b.com/
b
[root@centos7-1 conf.d]# curl http://www.d.com/
d

5.实现ssl加密的http服务 

技术分享



过程:

   1.配置CA

   2.配置http服务支持ssl

   3.测试


1.配置ssl

CA服务端,本次实验都在一台机器上:
[root@centos7-1 ~]# cd /etc/pki/CA/
[root@centos7-1 CA]# touch index.txt serial 
[root@centos7-1 CA]# echo 01> serial
生成私钥:
[root@centos7-1 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)
[root@centos7-1 CA]# tree 
.
├── certs
├── crl
├── index.txt
├── newcerts
├── private
│   └── cakey.pem
└── serial
生成自签证书:
[root@centos7-1 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私钥
[root@centos7-1 ~]# mkdir /etc/httpd/ssl
[root@centos7-1 httpd]# cd /etc/httpd/ssl
[root@centos7-1 httpd]# (umask 077;openssl genrsa -out http.key 1024)
Generating RSA private key, 1024 bit long modulus
......++++++
.++++++
e is 65537 (0x10001)
生成CA请求:
[root@centos7-1 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认证请求:   因为是同一台机器,就不复制了
[root@centos7-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文件到指定位置:
 
[root@centos7-1 ssl]# ls
http.crt  http.key


2.配置http服务支持ssl

[root@centos7-1 ~]# rpm -q mod_ssl
package mod_ssl is not installed
[root@centos7-1 ~]# yum -y install mod_ssl
[root@centos7-1 ~]# 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

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

4.测试

  1. 将服务器CA根证书导入到浏览器,然后访问;

  2. 测试成功了

    技术分享


推荐阅读
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
author-avatar
美娟婉燕6386
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有