精华内容
参与话题
问答
  • httpd

    千次阅读 2019-04-18 18:10:14
    文章目录httpd简介httpd的特性httpd相关命令及配置文件rpm包安装的配置文件httpd自带的工具程序相关命令编译安装httpd-2.4 httpd简介 httpd是Apache超文本传输协议(HTTP)服务器的主程序,被设计为一个独立运行...

    httpd简介

    • httpd是Apache超文本传输协议(HTTP)服务器的主程序,被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池
    • 6系列的版本默认提供的是httpd-2.2版本的rpm包;7系列的版本默认提供的是httpd-2.4版本的rpm包

    httpd的特性

    工作模型 工作方式
    prefork 多进程模型,预先生成进程,一个请求用一个进程响应
    一个主进程负责生成n个子进程,子进程也称为工作进程
    每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达
    最大不会超过1024个
    worker 基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
    event 基于事件的驱动,一个进程处理多个请求
    • 2.4版本相比之前版本新增的模块
    模块 功能
    mod_proxy_fcgi 反向代理时支持apache服务器后端协议的模块
    mod_ratelimit 提供速率限制功能的模块
    mod_remoteip 基于ip的访问控制机制被改变,不再支持使用Order,Deny,Allow来做基于IP的访问控制

    httpd相关命令及配置文件

    rpm包安装的配置文件
    • /var/log/httpd/access.log:访问日志
    • /var/log/httpd/error_log:错误日志
    • /var/www/html/:站点文档目录(yum)
    • /usr/local/apache/htdocs:站点文档目录(源码)
    • /usr/lib64/httpd/modules/:模块文件路径
    • /etc/httpd/conf/httpd.conf:主配置文件
    • /etc/httpd/conf.modules.d/*.conf:模块配置文件
    • /etc/httpd/conf.d/*.conf:辅助配置文件
    httpd自带的工具程序
    • htpasswd:basic认证基于文件实现时,用到的帐号密码生成工具
    • apachectl:httpd自带的服务控制脚本,支持start,stop,restart
    • apxs:由httpd-devel包提供的,扩展httpd使用第三方模块的工具
    • rotatelogs:日志滚动工具
    • suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
    • ab:apache benchmark,httpd的压力测试工具
    相关命令

    curl

    • curl是基于URL语法在命令行方式下工作的文件传输工具
    • 支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议
    • 功能有很多:https认证、http的POST/PUT等方法、ftp上传、kerberos认证、http上传、代理服务器、cookies、用户名/密码认证等
    • 最常用于下载
    语法:curl [options] [URL ...]
    -o/--output     //把输出写到文件中
    -e/--referer <URL>      //来源网址
    
    [root@localhost ~]# curl -o myblog.html http://blog.51cto.com/itchentao
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 67025    0 67025    0     0  87248      0 --:--:-- --:--:-- --:--:-- 87385
    [root@localhost ~]# ls
    myblog.html
    

    httpd

    httpd [options]
    -l	//查看静态编译的模块,列出核心中编译了哪些模块
    -M	//输出一个已经启用的模块列表
    -v`//显示httpd的版本,然后退出
    -V	//显示httpd和apr/apr-util的版本和编译参数,然后退出
    -X	//以调试模式运行httpd,ctrl+c退出
    -t	//检查配置文件是否有语法错误
    

    编译安装httpd-2.4

    准备环境

    1. 需yum安装Development Tools
    2. 需yum安装openssl-devel、pcre-devel、expat-devel、libtool
    3. 需编译安装apr-1.4、apr-util-1.4(1.4以上版本)
    4. 编译安装httpd-2.4
    [root@l134~]# yum groupinstall "Development Tools"
    ...
    [root@134 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool
    ...
    [root@134 ~]# ls
    apr-1.6.5.tar.bz2  apr-util-1.6.1.tar.bz2  httpd-2.4.39.tar.gz
    [root@134 ~]# tar -xf apr-1.6.5.tar.bz2 
    [root@134 ~]# tar -xf apr-util-1.6.1.tar.bz2 
    [root@134 ~]# tar -xf httpd-2.4.39.tar.gz 
    [root@134 ~]# ls
    apr-1.6.5          apr-util-1.6.1          httpd-2.4.39         
    apr-1.6.5.tar.bz2  apr-util-1.6.1.tar.bz2  httpd-2.4.39.tar.gz
    [root@134 ~]# cd apr-1.6.5
    [root@134 apr-1.6.5]# vim configure
    	cfgfile="${ofile}T"
        trap "$RM \"$cfgfile\"; exit 1" 1 2 15
        # $RM "$cfgfile"        //将此行加上注释,或者删除此行   
    //编译安装apr-1.6.5
    [root@134 apr-1.6.5]# ./configure --prefix=/usr/local/apr
    ...
    [root@134 apr-1.6.5]#make && make install
    ...
    //编译安装apr-util-1.6.1
    [root@134 ~]# cd apr-util-1.6.1/
    [root@134 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    ...
    [root@134 apr-util-1.6.1]#make && make install
    ...
    //编译安装httpd2.4
    [root@134 ~]# cd httpd-2.4.39
    [root@134 httpd-2.4.39]# ./configure --prefix=/usr/local/apache \
    --sysconfdir=/etc/httpd24 \
    --enable-so \
    --enable-ssl \
    --enable-cgi \
    --enable-rewrite \
    --with-zlib \
    --with-pcre \
    --with-apr=/usr/local/apr \
    --with-apr-util=/usr/local/apr-util/ \
    --enable-modules=most \
    --enable-mpms-shared=all \
    --with-mpm=prefork
    
    [root@134 httpd-2.4.39]# make && make install
    [root@134 httpd-2.4.39]# cd /usr/local/apache/
    [root@134 apache]# ls
    bin  build  cgi-bin  error  htdocs  icons  include  logs  man  manual  modules
    
    //如果安装时不是使用的默认路径,则必须要修改PATH环境变量,以能够识别此程序的二进制文件路径
    [root@134 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
    [root@134 ~]# cat /etc/profile.d/httpd.sh 
    export PATH=/usr/local/apache/bin:$PATH
    

    httpd常用配置

    切换使用MPM
    • yum安装:/etc/httpd/conf.modules.d/00-mpm.conf:切换使用MPM(工作模型)
      • prefork
      • event
      • worker
    #LoadModule mpm_event_module modules/mod_mpm_event.so
    //将注释注释去掉,或者修改成需要的工作模型
    
    • 源码安装:就在主配置文件中(/etc/httpd/httpd.conf)
      • 模块文件在/usr/local/apache/modules中以.so结尾的文件
    #LoadModule mpm_event_module modules/mod_mpm_event.so
    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    #LoadModule mpm_worker_module modules/mod_mpm_worker.so
    
    访问控制法则
    • 可针对全局设置,也可针对某个目录做访问控制
    法则 功能
    Require all granted 允许所有主机访问
    Require all denied 拒绝所有主机访问
    Require ip IPADDR 授权指定来源地址的主机访问
    Require not ip IPADDR 拒绝指定来源地址的主机访问
    Require host HOSTNAME 授权指定来源主机名的主机访问
    Require not host HOSTNAME 拒绝指定来源主机名的主机访问

    IPADDR的类型

    • IP:192.168.1.1
    • Network/mask:192.168.1.0/255.255.255.0
    • Network/Length:192.168.1.0/24
    • Net:192.168

    HOSTNAME的类型

    • FQDN:特定主机的全名(如www.baidu.com
    • DOMAIN:指定域内的所有主机(如*.baidu.com)
    //拒绝192.168.1.20主机访问,写在主配置文件中
    //如果设置只有192.168.1.20主机能访问,则不需要<RequireAll>和Require all granted
    <Directory /var/www/html/www>
        <RequireAll>
            Require not ip 192.168.1.20
            Require all granted
        </RequireAll>
    </Directory>
    

    注:httpd-2.4版本默认是拒绝所有主机访问的,所以安装以后必须做显示授权访问

    虚拟主机
    • 相同IP不同端口
    [root@134 ~]#vim /etc/httpd/conf/httpd.conf
    ...
    ServerName www.example.com:80	//将此行的注释取消
    ... 
    
    //因需要在主配置文件中加入示例文件,可用yum安装httpd
    //然后查找*vhosts.conf,复制其中示例到源码安装的httpd的主配置文件中
    [root@134 ~]# vim /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
    <VirtualHost *:@@Port@@>
        ServerAdmin webmaster@dummy-host.example.com
        DocumentRoot "@@ServerRoot@@/docs/dummy-host.example.com"
        ServerName dummy-host.example.com
        ServerAlias www.dummy-host.example.com
        ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
        CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
    </VirtualHost>
    //VirtualHost *:*表示所有Ip
    //@@Port@@:表示端口号 
    //ServerAdmin:表邮箱地址,有故障信息发送给谁,可删除
    //DocumentRoot:定义网站存放位置
    //ServerName:域名
    //ServerAlias:别名,可删除
    //ErrorLog :错误日志
    //CustomLog:访问日志
    
    //将以上内容复制到httpd.conf最后面,然后修改
    //2.2的版本需要在<VirtualHost *:80>前加NameVirtuaHost
    [root@134 ~]# vim /etc/httpd24/httpd.conf
    <VirtualHost *:80>
        DocumentRoot "/usr/local/apache/htdocs/aaaa"
        ServerName aaaa.example.com
        ErrorLog "logs/aaaa.example.com-error_log"
        CustomLog "logs/aaaa.example.com-access_log" common
    </VirtualHost>
    <VirtualHost *:81>
        DocumentRoot "/usr/local/apache/htdocs/bbbb"
        ServerName bbbb.example.com
        ErrorLog "logs/bbbb.example.com-error_log"
        CustomLog "logs/bbbb.example.com-access_log" common
    </VirtualHost>
    //因为是监听不同端口,所以还需在 Listen 80下加入Listen 81
    [root@134 ~]#mkdir /usr/local/apache/htdocs/aaaa
    [root@134 ~]#mkdir /usr/local/apache/htdocs/bbbb
    [root@134 ~]# apachectl -t
    Syntax OK
    [root@aaaa]# echo "hello-aaaa" > index.html
    [root@bbbb]# echo "hello-bbbb" > index.html
    

    在这里插入图片描述在这里插入图片描述

    • 不同IP相同端口
    //测试,临时给网卡加个ip
    [root@134 ~]# ip addr add 192.168.184.135/24 dev ens33
    [root@134 ~]# ip a
     ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:ba:de:cc brd ff:ff:ff:ff:ff:ff
        inet 192.168.184.134/24 brd 192.168.184.255 scope global noprefixroute dynamic ens33
           valid_lft 1758sec preferred_lft 1758sec
        inet 192.168.184.135/24 scope global secondary ens33
           valid_lft forever preferred_lft forever
        inet6 fe80::c2b0:554c:2a7c:e651/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    //httpd.conf配置文件中
    <VirtualHost 192.168.184.134:80>
        DocumentRoot "/usr/local/apache/htdocs/aaaa"
        ServerName aaaa.example.com
        ErrorLog "logs/aaaa.example.com-error_log"
        CustomLog "logs/aaaa.example.com-access_log" common
    </VirtualHost>
    
    <VirtualHost 192.168.184.135:80>
        DocumentRoot "/usr/local/apache/htdocs/bbbb"
        ServerName bbbb.example.com
        ErrorLog "logs/bbbb.example.com-error_log"
        CustomLog "logs/bbbb.example.com-access_log" common
    </VirtualHost>
    

    在这里插入图片描述在这里插入图片描述

    • 相同IP相同端口不同域名(实际环境最常用)
    <VirtualHost *:80>
        DocumentRoot "/usr/local/apache/htdocs/aaaa"
        ServerName aaaa.example.com
        ErrorLog "logs/aaaa.example.com-error_log"
        CustomLog "logs/aaaa.example.com-access_log" common
    </VirtualHost>
    <VirtualHost *:80>
        DocumentRoot "/usr/local/apache/htdocs/bbbb"
        ServerName bbbb.example.com
        ErrorLog "logs/bbbb.example.com-error_log"
        CustomLog "logs/bbbb.example.com-access_log" common
    </VirtualHost>
    
    //现在用另一台主机访问httpd服务机
    [root@140 ~]# vim  /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.184.134 aaaa.example.com
    192.168.184.134 bbbb.example.com
    
    [root@140 ~]# curl http://aaaa.example.com
    hello-aaaa
    [root@140 ~]# curl http://bbbb.example.com
    hello-bbbb
    
    配置https步骤

    1、启用ssl模块

    编辑/etc/httpd/conf.modules.d/00-base.conf文件;yum安装
    编辑/etc/httpd24/http.conf主配置文件;源码安装
    添加,或取消注释以下行
    LoadModule ssl_module modules/mod_ssl.so
    

    2、生成证书(实际环境证书需购买)

    [root@140 ~]# cd /etc/pki/CA/
    //生成秘钥
    [root@140 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
    //提取公钥
    [root@140 CA]# openssl rsa -in private/cakey.pem -pubout
    //CA生成自签署证书
    [root@140 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) []:HuBei
    Locality Name (eg, city) [Default City]:WuHan
    Organization Name (eg, company) [Default Company Ltd]:aaaa.example.com
    Organizational Unit Name (eg, section) []:aaaa.example.com
    Common Name (eg, your name or your server's hostname) []:aaaa.example.com
    Email Address []:abc@qq.com
    
    [root@140 CA]# touch index.txt && echo 01 > serial
    [root@140 CA]# ls
    cacert.pem  certs  crl  index.txt  newcerts  private  serial
    
    //由于证书是给网站服务器用,所以此时的客户端就是网站服务器,需在网站服务器生成秘钥
    [root@134 ~]# cd /etc/httpd24/
    [root@134 httpd24]# mkdir ssl && cd ssl
    [root@134 ssl]# ls
    [root@134 ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
    //客户端生成证书签署请求
    [root@134 ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
    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) []:HuBei
    Locality Name (eg, city) [Default City]:WuHan
    Organization Name (eg, company) [Default Company Ltd]:aaaa.example.com
    Organizational Unit Name (eg, section) []:aaaa.example.com
    Common Name (eg, your name or your server's hostname) []:aaaa.example.com
    Email Address []:abc@qq.com
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    
    //客户端把证书签署请求文件发送给CA
    [root@134 ssl]# ls
    httpd.csr  httpd.key
    [root@134 ssl]# scp httpd.csr root@192.168.184.140:/root
    
    //服务端中
    [root@140 ~]# ls
    httpd.csr
    [root@140 ~]# openssl ca -in /root/httpd.csr -out httpd.crt -days 365
    Using configuration from /etc/pki/tls/openssl.cnf
    Check that the request matches the signature
    Signature ok
    Certificate Details:
            Serial Number: 1 (0x1)
            Validity
                Not Before: Apr 20 06:01:16 2019 GMT
                Not After : Apr 19 06:01:16 2020 GMT
            Subject:
                countryName               = CN
                stateOrProvinceName       = HuBei
                organizationName          = aaaa.example.com
                organizationalUnitName    = aaaa.example.com
                commonName                = aaaa.example.com
                emailAddress              = abc@qq.com
            X509v3 extensions:
                X509v3 Basic Constraints: 
                    CA:FALSE
                Netscape Comment: 
                    OpenSSL Generated Certificate
                X509v3 Subject Key Identifier: 
                    2C:01:34:9A:8E:6D:D5:0C:1A:7E:68:3E:C6:74:3A:8D:1E:C6:2B:62
                X509v3 Authority Key Identifier: 
                    keyid:EF:98:CD:4B:7C:09:02:46:52:E1:92:A6:02:64:D8:CE:4D:EC:E2:17
    
    Certificate is to be certified until Apr 19 06:01:16 2020 GMT (365 days)
    Sign the certificate? [y/n]:y
    
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    //生成证书httpd.crt
    [root@140 ~]# ls
    httpd.crt  httpd.csr
    //将证书传回给客户端
    [root@140 ~]# scp httpd.crt root@192.168.184.134:/root
    [root@134 ~]# mv httpd.crt /etc/httpd24/ssl/
    [root@134 ~]# ll /etc/httpd24/ssl/
    -rw-r--r--. 1 root root 4689 4月  20 14:05 httpd.crt
    -rw-r--r--. 1 root root 1074 4月  20 13:55 httpd.csr
    -rw-------. 1 root root 1675 4月  20 13:51 httpd.key
    

    配置https

    [root@134 ~]# /etc/httpd24/http.conf
    Include /etc/httpd24/extra/httpd-ssl.conf取消注释
    
    [root@134 httpd24]# vim /etc/httpd24/extra/httpd-ssl.conf
    SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"//此行注释
    
    DocumentRoot "/usr/local/apache/htdocs/aaaa"
    ServerName aaaa.example.com:443
    ErrorLog "/usr/local/apache/logs/aaaa.example.com-error_log"
    TransferLog "/usr/local/apache/logs/aaaa.example.com-access_log"
    
    SSLCertificateFile "/etc/httpd24/ssl/httpd.crt"
    SSLCertificateKeyFile "/etc/httpd24/ssl/httpd.key"
    
    

    在这里插入图片描述
    总结
    1、生成证书
    2、主配置文件

    • 取消LoadModule ssl_module modules/mod_ssl.so注释
    • 取消Include /etc/httpd24/extra/httpd-ssl.conf注释
    • 取消Include /etc/httpd24/extra/httpd-vhosts.conf注释

    3、相关配置

    • /etc/httpd24/extra/httpd-ssl.conf配置证书位置;Include
    • /etc/httpd24/extra/httpd-vhosts.conf配置虚拟主机
    • 设置hosts以便用域名访问
    展开全文
  • httpd服务

    万次阅读 2017-05-27 15:50:00
    httpd服务,apache,虚拟主机,路径访问控制

    httpd服务

    在这里插入图片描述

    Httpd服务

    httpd是一个开源软件,且一般用作web服务器来使用。目前最流行的web服务器软件叫做httpd,
    在早期的http server就叫做apache,到了http server 2.0以后就改名为httpd了。
    所以有时候听到apache服务器和httpd服务器其实都是指得是一个意思。
    

    ####httpd生产的文件
    httpd目前有多个版本,主流有两个版本分别为:2.2、2.4,在安装了httpd软件之后,会生成配置文件。
    这些文件有:
    其中主配置文件:/etc/httpd/conf/httpd.conf
    分段配置文件:/etc/httpd/conf.d/.conf(一般自己定义配置在此文件下重新建立)
    模块的目录:/etc/httpd/modules
    日志目录:/etc/log/httpd/

    访问日志为:./access_log
    错误日志为:./err_log
    网页的存放目录:/var/www/html
    ####httpd的特性:
    高度模块化: core + modules
    DSO:dynamic shared object
    MPM:Multipath processing Modules (多路处理模块)
    prefork:多进程模型,每个进程响应一个请求、一个主进程:负责生成子进程及回收子进程;负责创建套接字;
    负责接收请求,并将其派发给某子进程进行处理,每个子进程处理一个请求。
    worker:多进程多线程模型,每线程处理一个用户请求、一个主进程:负责生成子进程、负责创建套接字、
    负责接收请求、并将其派发给某子进程进行处理,每个子进程负责生成多个线程,每个线程负责响应用户请求;
    并发响应数量为:子进程数量*子进程创建的最大线程数量。
    event:事件驱动模型,多进程模型,每个进程响应多个请求、一个主进程 :负责生成子进程、负责创建套接字、
    负责接收请求,并将其派发给某子进程进行处理,子进程基于事件驱动机制直接响应多个请求。

    注:在/etc/httpd/conf.modules.d/00-mpm.conf切换工作模型
    

    ####httpd的功能特性:
    CGI:Common Gateway Interface
    虚拟主机:IP,PORT, FQDN
    反向代理
    负载均衡
    路径别名
    丰富的用户认证机制
    basic
    digest
    支持第三方模块
    ####服务控制:
    systemctl enable|disable httpd.service #开机启动与否
    systemctl {start|stop|restart|status} httpd.service #单次操作状态
    #####1、 监听地址端口
    在主配置文件中/etc/httpd/conf/httpd.conf:
    Listen IP:PORT,表示监听在该IP的PORT端口上,如果不写IP,表示监听本机所有可用IP地址,
    另外,Listen指令可以出现多次,表示监听不同IP及不同端口上,修改完成后需要重启生效
    注意:在修改完配置文件后需要使用:httpd –t 检查语法,语法没有问题才可继续其它操作
    #####2、 持久连接
    Persistent Connection:tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行。
    副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常响应。
    解决方案:使用较短的持久连接时长,以及较少的请求数量;
    KeepAlive On|Off 此功能开启|关闭
    KeepAliveTimeout 15 时间限制15秒
    MaxKeepAliveRequests 100 请求数量100

    以上表示:当一个连接建立,时间超过15秒或请求数量超过100个时,服务器会主动断开。
    

    #####3、 MPM
    文章开头已介绍,下面是配置选项与参数,
    prefork的配置
    这里写图片描述
    worker的配置:
    这里写图片描述
    修改模型选项:/etc/httpd/conf.modules.d/00-mpm.conf
    #####4、 DSO
    配置指令模块加载,格式如下:
    LoadModule <module_name> <module_path>
    模块路径可以是相对路径,相对ServerRoot指令指向的位置
    配置文件:/etc/httpd/conf.modules.d/00-proxy.conf
    #####5、 定义Main server 文档页面路径
    使用DocumentRoot指令,关联文档路径的映射
    DocumentRoot指向路径问URL起始位置
    如DocumetRoot “/var/www/html”
    在本地有一个文件file在/var/www/html/filedir/file则URL访问路径为www.smartwy.com/filedir/file
    #####6、 站点路径访问控制
    可基于两种机制指明对哪些资源进行何种访问控制:
    文件系统路径

    1,<Directory  "/dir/">
    		...
      </Directory>
    2,<File  "/dir/to/file">
    		...
      </File>
    3, <FileMatch  "PATTERN">
    		...
      </FileMatch>
    
    
    下面以路径访问控制做简单介绍
    
    <Directory "/var/www/cgi-bin">
    		AllowOverride None 
    		Options None
    		Require all granted
    </Directory> 
    
    
    AllowOverride:与访问控制相关的哪些执行可以放在.htacesss文件中,每个目录下都可以有一个 ,
    但是使用.htacess会使得网站对目录下的资源解析变的非常慢,不推荐使用。ALL所有都可以放进去,None什么都不可以放。
    Options:Indexs:指明的URL路径不存在与定义的主页面资源相符的资源文件时候,返回索引列表给用户,
    目录浏览功能,一般关掉。
    FollowSymLinks:允许跟踪符号链接文件所指向的源文件,跟踪符号链接,如果目录下存在软连接,则可以直接
    访问软连接指向的文件
    None:全部停用
    All:全部启用
    
    Httpd2.4使用:Require:对控制页面访问控制,
    			Require all granted 全部允许访问
    			Require ip *.*.*.* 指定ip允许访问
    			Require host host_name 指定主机名允许方法
    Httpd2.2使用:Order allow,deny 检查次序
    	     	Deny(黑名单) from 172.16.12.1  不允许172.16.12.1地址访问
    			Allow(白名单) from 172.16  仅允许172.16网段的地址访问
     	
     	注意:指定访问控制时较小集合域放在前面
    

    #####7、 定义站点主页面
    DirectoryIndex index.html index.html.var
    从左到右匹配到的文件,将作为默认主页返回
    #####8、 日志
    访问日志:access_log | -date
    LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
    LogFormat “%h %l %u %t “%r” %>s %b” common
    LogFormat “%{Referer}i -> %U” referer
    LogFormat “%{User-agent}i” agent
    %h:客户端IP地址;
    %l:Remote User, 通常为一个减号(“-”);
    %u:Remote user (from auth; may be bogus if return status (%s) is 401);非为登录访问时,其为一个减号;
    %t:服务器收到请求时的时间;
    %r:First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本;
    %>s:响应状态码;
    %b:响应报文的大小,单位是字节;不包括响应报文的http首部;
    %{Referer}i:请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的;
    %{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用程序。
    错误日志:error_log | -date
    错误级别:debug, info, notice, warn, error, crit, alert, emerg,
    #####9、 基于用户访问控制
    认证质询:
    WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码;
    认证:
    Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源;
    认证方式有两种:
    basic:明文
    digest:消息摘要认证
    用户的账号和密码存放于何处?
    虚拟账号:仅用于访问某服务时用到的认证标识
    存储:
    文本文件;
    SQL数据库;
    ldap目录存储;
    格式如下:
    这里写图片描述
    编写完成后,systemctl restart httpd.service重启httpd服务,
    在浏览器地址栏内输入相应域名,会出现以下界面,填入上方指定的用户与密码便可继续访问。
    这里写图片描述
    下面是帐号与密码的创建与管理:
    Htpasswd:专用命令完成此类文件的创建及用户管理
    htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username
    -c:首次创建密码文件时使用,如再次使用会覆盖以前的密码文件
    -m:md5格式加密
    -s: sha格式加密
    -D:删除指定用户
    -b:批模式添加用户
    htpasswd -b [options] /HTTPD_PASSWD_FILE username password
    这里写图片描述
    自定义密码文件路径,配置文件内路径要与实际文件路径相同,
    使用组帐号进行认证
    这里写图片描述
    组文件编写:group: user1 user2 …(一行定义一个组)
    组成员访问时与普通访问相同,密码创建也相同。
    注意:修改配置文件后,检查语法httpd –t ,没有问题,重启httpd服务,配置才可生效。
    #####10、 虚拟主机
    一个物理主机可以服务与多个站点,每个站点可以通过一个或多个虚拟主机来实现。
    有三种实现方案:
    基于ip:为每个虚拟主机准备至少一个ip地址;
    基于port:为每个虚拟主机使用至少一个独立的port;
    基于FQDN:为每个虚拟主机使用至少一个FQDN;

    基于ip和基于port只做介绍说明,基于FQDN做实验说明:
    基于IP的虚拟主机示例(在/etc/httpd/conf.d/下新建**.conf文件):
    
    <VirtualHost 172.16.100.6:80> #端口相同,ip不同(确定主机有两个ip)
    	ServerName www.a.com #虚拟服务器域名(基于IP与port实验没有影响)
    	DocumentRoot "/www/dir" #指定站点根目录,实验时在根目录下新建index.html文件,
    	写一点测试信息在里面,方便查看实验效果。
    </VirtualHost>
    <VirtualHost 172.16.100.7:80>
    	ServerName www.b.net
    	DocumentRoot "/www/dir"
    </VirtualHost>
    可在浏览器地址栏中输入IP查看。
    
    基于端口的虚拟主机(在/etc/httpd/conf.d/下新建**.conf文件):
    <VirtualHost 172.16.100.6:80> #IP相同,端口不同
    	ServerName www.a.com
    	DocumentRoot "/www/dir"
    </VirtualHost>
    Listen 808 #开启监听808端口
    <VirtualHost 172.16.100.6:808>
    	ServerName www.b.net
    	DocumentRoot "/www/dir"
    </VirtualHost>
    可在浏览器地址栏中输入IP:PORT查看。
    
    基于FQDN的虚拟主机(在/etc/httpd/conf.d/下新建**.conf文件):
    <VirtualHost 172.16.100.6:80>
    	ServerName www.a.com
    	DocumentRoot "/www/dir"
    </VirtualHost>
    <VirtualHost 172.16.100.6:80>
    	ServerName www.b.net
    	DocumentRoot "/www/dir"
    </VirtualHost>
    可在浏览器地址栏中输入域名查看。
    
    基于FQDN的虚拟主机实验:
    1.1在/etc/httpd/conf.d目录下新建两个配置文件:
    

    这里写图片描述
    这里写图片描述
    注意:如果是httpd-2.2,则使用基于FQDN的虚拟主机时,需要事先使用如下指令:
    NameVirtualHost IP:PORT

    在设置的站点根目录下新建index.html文件,
    这里写图片描述
    编写完成后,httpd –t 检查语法,重启httpd服务。
    1.2DNS正向解析:
    将www.smartwy.com与www.magedu.com解析到172.16.253.190
    /etc/named.rfc1912.conf添加以下内容
    这里写图片描述
    新建区域解析库/var/named/smartwy.com.zone编辑如下:
    这里写图片描述
    新建区域解析库/var/named/magedu.com.zone编辑如下:
    这里写图片描述
    以上配置要确保172.16.252.205处于被监听状态,与172.16.253.190联通,
    执行named-checkconf,
    named-checkzone “smartwy.com” 区域解析库名,
    named-checkzone “magedu.com” 区域解析库名,
    rndc reload 重新加载。
    1.3 测试(使用的域名有可能在公网已被使用,可把DNS设为172.16.252.205防止公网影响)
    这里写图片描述
    #####11、 内置的server-status页面
    在虚拟主机内添加/server-status选项
    这里写图片描述
    使用的是2.2版本,设置如下

    <Location /server-status>
     	SetHandler server-status
    		Order allow,deny
    		Allow from 172.16
    </Location>
    

    Httpd –t 检查语法,重启服务,
    在浏览器地址栏输入www.smartwy.com/server-status

    这里写图片描述

    展开全文
  • 开启httpd

    2018-11-03 09:04:45
    使用service httpd status查看httpd的运行状态 service httpd start service httpd stop 没有service httpd的话   httpd -k start

    使用service httpd status查看httpd的运行状态

    service httpd start

    service httpd stop

    没有service httpd的话

     

    httpd -k start

    展开全文
  • 安装httpd,如果出现No package httpd available,可以尝试: yum --disableexcludes=all install -y httpd

    安装httpd,如果出现No package httpd available,可以尝试:

    yum --disableexcludes=all install -y httpd

     

    展开全文
  • 安装httpd

    2019-06-28 17:56:51
      第一步: 安装httpd ( yum会默认安装对应当前centos版本默认的httpd版本 ) yum install httpd   第二步: 检查http安装是否成功 apachectl -v -- 安装成功应显示相关信息: ...
  • httpd配置

    千次阅读 2018-05-22 14:00:58
    一、初识httpd  httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。  官方站点:www.apache.org    1、httpd的特性  ⑴高度...
  • httpd服务器

    2018-09-17 23:39:39
    1.编译安装httpd-2.4 2.配置三种不同风格的虚拟主机 2.1 相同Ip不同端口 2.2 不同Ip相同端口 2.3相同IP相同端口不同域名 1.编译安装httpd-2.4 配置本地源 [root@httpd yum.repos.d]#...
  • 当我们启动httpd服务的时候,系统报错为 Failed to start httpd.service: Unit httpd.service is masked. 解决方法: systemctl unmask httpd.service然后在启动httpd服务并且查看端口80已启动: [root@A8 ~]#...
  • Linux安装httpd

    2019-03-28 18:39:00
    因为集群httpd的版本较低,故而出现安全漏洞。现对其进行升级,具体步骤如下:(rpm卸载原来的httpd此处不再赘述!!!) 一、首先下载相应版本的安装包 因为httpd依赖于apr和apr-util,故这两个包也一并下载。 ...
  • 启动httpd服务

    千次阅读 2019-02-20 14:57:05
    1、安装httpd:yum install httpd 2、启动:service httpd restart 3、http若链接不上则查看防火墙 查看:systemctl status firewalld service firewalld status 临时关闭:systemctl stop firewalld 永久关闭:...
  • ansible 安装 httpd-2.4.25 启动httpd

    千次阅读 2017-04-17 11:29:10
    一、下载httpd, apr, apr-util 源码包 httpd 源码包 http://httpd.apache.org/download.cgi#apache24  apr和apr-util源码包 http://apr.apache.org/download.cgi  二、编译httpd  1、解压三个软件包,将apr...
  • httpd.conf

    热门讨论 2012-06-26 20:59:17
    httpd.conf 配置文件
  • HTTPD简介 Apache HTTP Server(简称Apache或httpd)是Apache软件基金会的一个开放源代码的网页服务器软件,旨在为unix,windows等操作系统中提供开源httpd服务。由于其安全性、高效性及可扩展性,被广泛使用,...
  • 删除httpd

    2014-10-09 16:09:16
    1、[root@localhost etc]# rpm -qa|grep httpd,查看与httpd相关软件包。 httpd-tools-2.2.15-15.el6.centos.i686 httpd-2.2.15-15.el6.centos.i686 2、然后删除httpd: [root@localhost etc]# rpm -e ...
  • httpd服务架设简单web站点的部署过程一、web部署过程1、确定网站的名称、以及IP地址2、配置启动httpd服务2.1、配置httpd服务2.2、启动httpd服务3、部署网页文档4、在客户端访问web站点5、查看web站点的访问情况二、...
  • busybox httpd用法及httpd.conf说明

    千次阅读 2017-03-04 19:50:11
    没玩过httpd,很纠结怎么用,找了很多资料,甚至httpd.conf都不知道怎么下手,但实际上,如果不需要特殊配置的话,不需要httpd.conf文件也可以,例如使用以下命令: http -p 80 -u 80 -h /www(web所在目录)即可。 ...
  • Ubuntu 安装 httpd

    千次阅读 2016-11-10 15:10:23
    Ubuntu 安装 httpd
  • 安装phpstudy 后启动 phpstudy 发现...httpd: Syntax error on line 163 of /phpstudy/server/httpd/conf/httpd.conf: Cannot load modules/libphp5.so into server: /phpstudy/server/httpd/modules/libphp5.so: ...
  • 安装Httpd服务

    2018-09-12 15:44:18
    系统服务 Httpd www server Apache server http:// .html ...httpd配置:etc/httpd/conf/httpd.conf ServerRoot “/etc/httpd” 用于指定Apache的运行目录 Listen 80 监听端口 Servername w...
  • 修改httpd端口

    千次阅读 2018-10-12 14:30:00
    修改httpd端口 默认httpd端口为80,现在改成800 修改两个地方: 1.修改配置文件httpd.conf listen 80 把80改成需要的端口 2.修改配置文件httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "E:/...
  • httpd.conf 安全配置

    万次阅读 2018-12-07 13:33:53
    ServerRoot “/etc/httpd” //用于指定Apache的运行目录,服务启动之后自动将目录改变为当前目录,在后面使用到的所有相对路径都是相对这个目录下 PidFile run/httpd.pid //设定apache守护进程的pid号。 Timeout.....
  • httpd 官方下载

    2019-09-30 10:24:20
    1,http://httpd.apache.org/ 2,http://httpd.apache.org/download.cgi 3,http://httpd.apache.org/docs/current/platform/windows.html#down 4,按第三步提示的连接进入,选择你要下载的版本下载(不同链接中的都有...
  • httpd虚拟主机

    2018-08-14 21:49:31
    httpd2.2的安装和简介 安装httpd2.4 过程都挺正常的 可以去官网找安装包 http://httpd.apache.org/download.cgi 安装httpd2.4的时候还需要注意一点,需要在官网多下载两个tar包,apr与apr-util这个是httpd运行...
  • rhel7 httpd

    2018-05-27 16:48:50
    1. yum install httpd -y 安装httpd服务2. vim /etc/httpd/conf/httpd.conf /httpd主配置文件3. &lt;VirtualHost 20.17.17.50&gt;DocumentRoot /home/wwwrootServerName www.xiaolei.com&lt;...
  • 文章目录一、实验环境说明一、httpd概述二、httpd的工作模式三、httpd的事务概述四、CentOS 6简单安装httpd2.2和配置4.1、安装和主要安装文件说明4.2、默认配置文件格式说明以及配置指令格式说明4.3、修改监听的地址...
  • yum -y install httpd 2、启动、关闭、查看状态 # 启动 /bin/systemctl start httpd.service # 关闭 /bin/systemctl stop httpd.service # 查看状态 systemctl status httpd 3、修改配置 ...
  • httpd 密码验证

    2020-01-06 23:16:25
    #1,配置站点: ...[root@c7 conf.d]# grep DocumentRoot /etc/httpd/conf/httpd.conf # DocumentRoot: The directory out of which you will serve your DocumentRoot "/var/www/html" [root@c7 co...

空空如也

1 2 3 4 5 ... 20
收藏数 64,036
精华内容 25,614
关键字:

httpd