阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

httpd-2.2 常用配置选项及VirtualHost

423次阅读
没有评论

共计 10715 个字符,预计需要花费 27 分钟才能阅读完成。

目录:
一、httpd 服务基本介绍
二、httpd-2.2 常用小选项配置
三、httpd-2.2 VirtualHost 配置
四、httpd-2.2 的基于 https 的安全访问
————————————–
一、httpd 服务基本介绍:
        httpd 是 Apache 超文本传输协议(HTTP)服务器的主程序。被设计为一个独立的运行的后台进程,它会建立一个出来请求的子进程或线程的池。通常 httpd 不被直接调用,而是由 apachectl 调用。http 是一个应用程的协议,它可以分为 http 和 https,它们分别使用 tcp 协议端口的 80 和 443 端口。

请求响应方式:
        客户端需要访问某资源时会向服务器发送 http 请求报文,服务器根据客户端请求信息做出 http 响应报文,所以一次 http 事务就是 http 请求然后 http 会给予请求响应。

web 资源:
        资源的标识:URL:用于标识 web 资源所在的位置。
        格式:协议:// 主机地址或者主机名[:端口][/ 目录资源]

        静态资源:不需要服务器做任何操作处理,例如.JGP .PNG 格式的文件等

        动态资源:服务器需要执行一些程序做出处理后返回给客户端请求所需要的信息,例如.php .js

一次完整的 htpt 请求处理过程:
(1)建立或处理连接:接收请求或者是拒绝请求
(2)接收请求:接收客户端主机请求报文中对某个资源的一次请求过程

(3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法相关信息

(4)访问资源:获取请求报文中请求的资源

(5)构建响应报文

(6)发送响应报文

(7)记录日志

并发访问响应模型:
        单进程 I / O 模型:启动一个进程处理用户请求,一次只能处理一个请求对公请求被串行响应

        多进程 I / O 模型:并行启动多个进程,每个进程响应一个请求
        复用进程 I / O 模型:一个进程响应多个请求
                    多线程模式:一个进程生成多个线程,一个线程处理一个请求

                    事件驱动模式:一个进程直接响应多个请求

        复用多进程 I / O 模型:启动多个进程,每个进程生成多个线程,响应请求的数量就是线程乘以进程
   
httpd 工作模式:
        prefork:多进程模式:一个主进程多个子进程,一个进程只响应一个请求。一个主进程负责生成子进程及回收子  进程,接收请求,派发请求给子进程处理,生成的多个子进程中每个子进程负责处理一个请求。

        worker:多进程多线程模式:一个线程响应一个用户请求。一个主进程负责生成子进程及回收及进程,创建套接字,派发请求给子进程处理。多个子进程负责生成多个线程。每个线程负责响应用户请求。

        event:事件驱动模式:多进程模式:一个进程响应多个用户请求。一个主进程负责生成子进程及回收及进程,创建套接字,派发请求给子进程处理。子进程负责基于事件驱动机制直接来响应用户的请求。

二、httpd 常用选项配置
1、监听端口                                   
Listen 80  ## 监听本机的 80 端口
Listen 8080 ## 监听本机的 8080 端口
Listen 192.168.1.100:80 ## 监听特定 IP 的 80 端口
Listen 192.168.1.101:8080 ## 监听指定 IP 的特定端口

2、保持连接

KeepAlive Off|ON ## 是否允许持续性连接,即建立一次 tcp 连接完成多个文件传输
MaxKeepAliveRequests 100 ## 最大保存连接请求数量
KeepAliveTimeout 15 ## 保存持续性连接超时时间

3、MPM 多路处理模块
[root@linuxidc ~]# ps aux | grep httpd ## 查看 httpd 使用的 MPM 模块
root      5012  0.0  0.3 185928  3972 ?        Ss  23:44  0:00 /usr/sbin/httpd
apache    5022  0.0  0.2 186060  2492 ?        S    23:44  0:00 /usr/sbin/httpd
apache    5023  0.0  0.2 186060  2508 ?        S    23:44  0:00 /usr/sbin/httpd
apache    5024  0.0  0.2 186060  2492 ?        S    23:44  0:00 /usr/sbin/httpd
apache    5025  0.0  0.2 186060  2492 ?        S    23:44  0:00 /usr/sbin/httpd
apache    5026  0.0  0.2 186060  2492 ?        S    23:44  0:00 /usr/sbin/httpd
apache    5027  0.0  0.2 186060  2492 ?        S    23:44  0:00 /usr/sbin/httpd
apache    5028  0.0  0.2 186060  2492 ?        S    23:44  0:00 /usr/sbin/httpd
apache    5029  0.0  0.2 186060  2492 ?        S    23:44  0:00 /usr/sbin/httpd
root      5064  0.0  0.0 103304  892 pts/2    S+  23:55  0:00 grep httpd
[root@linuxidc ~]# httpd -l                ##### 我们从中可以看出使用的是默认 preforkmok
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c 
   
如果需要更改我们默认使用的模块方法:
[root@linuxidc ~]# vim /etc/sysconfig/httpd 
HTTPD=/usr/sbin/httpd.worker 
 
————————– ———————————-
<IfModule prefork.c>###prefork 模块配置
StartServers      8  #启动 httpd 时预先创建几个子进程数量
MinSpareServers    5  #最小空闲进程数量 
MaxSpareServers  20  #最大空闲进程数量
ServerLimit      256  #服务器同一时间内能够响应进程的数量
MaxClients      256  #最多可以允许客户端并发请求连接数量
MaxRequestsPerChild  4000 #每个子进程能够响应的最大请求数量
</IfModule>
 
 
<IfModule worker.c>##worker 模块配置
StartServers        4  #启动 httpd 是预先创建几个字进程数量
MaxClients        300  #最多允许客户端并发请求连接数量
MinSpareThreads    25  #最小空闲进程数量
MaxSpareThreads    75  #最大空闲进程数量
ThreadsPerChild    25  #进程启动时候生成的线程数量
MaxRequestsPerChild  0  #每个子进程能够响应的最大请求数量
</IfModule>

4、DSO(动态加载或卸载模块)
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so

5、基于 ip 来源访问控制
<Directory “/var/www/html”>
 
 Options Indexes FollowSymLinks  #定义资源展示方式
    AllowOverride None
     
      Order allow,deny
    Allow from all
    deny from 192.168.1.100 ### 禁止 192.168.1.100 访问网站
</Directory>

6、定义站点主页面

DirectoryIndex index.html index.html.var(有多个文件自左而又查找)

7、定义路径别名
[root@linuxidc ~]# mkdir -p /etc/url/index.html ### 建立别名链接文件
 
[root@linuxidc ~]# vim /etc/httpd/conf/httpd.conf 
    Alias /bbs/ “/etc/url/”  ## 编辑主配置文件设置路径别名连接
 
测试:
[root@linuxidc ~]# curl 192.168.1.100/bbs/index.html 
url alias

8、基于用户访问认证控制
第一种:基于用户账号进行认证
    1)主配置文件中添加认证区域内容:
[root@linuxidc ~]# vim /etc/httpd/conf/httpd.conf 
<Directory “/var/www/html”>
 
 Options Indexes FollowSymLinks 
    AllowOverride None
     
    Order allow,deny
    Allow from all
    deny from 192.168.1.100
 
添加内容 ##   
    AuthType Basic  ### 定义认证的类型:明文(basic)或密文(digest)
    AuthName “admin use zone”  ### 提示信息
    AuthUserFile “/etc/httpd/conf/.htpasswd” ### 认证用户文件存放路径
    Require valid-user  #### 允许用户文件中的所有用户登录
       
</Directory>

  2)提供用户账号和密码文件:

[root@linuxidc ~]# htpasswd -c -m /etc/httpd/conf/.htpasswd tom 
[root@linuxidc ~]# htpasswd  -m /etc/httpd/conf/.htpasswd jerry

3)检查配置文件重新加载
[root@linuxidc ~]# httpd -t 
Syntax OK
[root@linuxidc ~]# service httpd reload 
Reloading httpd:

第二种:基于组账号进行认证
1)
[root@linuxidc ~]# vim /etc/httpd/conf/httpd.conf 
<Directory “/var/www/html”>
 
 Options Indexes FollowSymLinks 
    AllowOverride None
     
    Order allow,deny
    Allow from all
    deny from 192.168.1.100
 
添加内容 ##   
    AuthType Basic  ### 定义认证的类型:明文(basic)或密文(digest)
    AuthName “admin use zone”  ### 提示信息
    AuthUserFile “/etc/httpd/conf/.htpasswd” ## 定义用户账号文件
    AuthGroupFile “/etc/httpd/conf/.hgpasswd” ### 定义组账号文件
    Require group groupuser ### 定义组账号文件中允许访问的用户
   
</Directory>

2)建立用户
[root@linuxidc ~]# htpasswd -c -m /etc/httpd/conf/.htpasswd user1
[root@linuxidc ~]# htpasswd  -m /etc/httpd/conf/.htpasswd user2

3)建立组账号文件
 [root@linuxidc ~]# vim /etc/httpd/conf/.hgpasswd
    groupuser:user1 user2

4)检查配置文件重新加载
 [root@linuxidc ~]# httpd -t 
Syntax OK
[root@linuxidc ~]# service httpd reload 
Reloading httpd:

9、status 页面

1)确保模块加载:LoadModule status_module modules/mod_status.so
2)开启 228 行 ExtendedStatus On
3)编辑 status 区域
 <Location /var/www/html/server-status>
        SetHandler server-status
        Order allow,deny 
        Allow from 192.168
  </Location>
   
4)检查配置文件正确否,加载服务
 
5)访问
 Apache Server Status for 192.168.1.100
 
Server Version: Apache/2.2.15 (Unix) DAV/2
Server Built: Jul 24 2015 11:52:28
Current Time: Thursday, 12-May-2016 01:24:37 CST
Restart Time: Thursday, 12-May-2016 01:22:20 CST
Parent Server Generation: 7
Server uptime: 2 minutes 16 seconds
Total accesses: 4 – Total Traffic: 0 kB
CPU Usage: u0 s0 cu0 cs0
.0294 requests/sec – 0 B/second – 0 B/request
1 requests currently being processed, 7 idle workers
____W___………………………………………………..
……………………………………………………….
……………………………………………………….
……………………………………………………….
Scoreboard Key:

 

10、运行 httpd 服务的属主和属组
User apache
Group apache

11、使用 mod_deflate 模块压缩页面优化传输速度
SetOutputFilter DEFLATE
# mod_deflate configuration
 
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
 
# Level of compression (Highest 9 – Lowest 1)
DeflateCompressionLevel 9
             
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4  gzip-only-text/html
             
# Netscape 4.06-4.08 have some more problems
BrowserMatch  ^Mozilla/4\.0[678]  no-gzip
             
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E]  !no-gzip !gzip-only-text/html

三、httpd-2.2 VirtualHost 配置
1、基于 IP 的 virtualhost:(事先准备好两个 IP)
    1)编辑配置文件设置如下:
<VirtualHost 192.168.1.100:80>
    DocumentRoot “/web/vhosts/www1”
    ServerName www1.a1.com
    ErrorLog “/var/log/httpd/www1.err”
    CustomLog “/var/log/httpd/www1.access” common
</VirtualHost>
 
<VirtualHost 192.168.1.101:80>
    DocumentRoot “/web/vhosts/www2”
    ServerName www2.a2.com
    ErrorLog “/var/log/httpd/www2.err”
    CustomLog “/var/log/httpd/www2.access” common
</VirtualHost>

    2)修改下
DocumentRoot “/web/vhosts/”

    3)建立网页文件

[root@linuxidc ~]# mkidr -p /web/vhosts/www1/index.html
[root@linuxidc ~]# mkidr -p /web/vhosts/www2/index.html

    4)检查配置文件是否正确,然后重启或加载,ok 后测试结果
[root@linuxidc ~]# httpd -t 
Syntax OK
[root@linuxidc ~]# service httpd reload

    5)查看我们的日志文件
[root@linuxidc ~]# cat /var/log/httpd/www1.access
192.168.1.103 – – [12/May/2016:02:14:04 +0800] “GET / HTTP/1.1” 200 25
[root@linuxidc ~]# 
[root@linuxidc ~]# 
[root@linuxidc ~]# cat /var/log/httpd/www
www1.access  www1.err    www2.access  www2.err     
[root@linuxidc ~]# cat /var/log/httpd/www1.err

2、基于端口的 virtualhost

1)编辑配置文件设置如下:
<VirtualHost 192.168.1.100:80>
    DocumentRoot “/web/vhosts/www1”
    ServerName www1.a1.com
    ErrorLog “/var/log/httpd/www1.err”
    CustomLog “/var/log/httpd/www1.access” common
</VirtualHost>
 
<VirtualHost 192.168.1.100:8080>
    DocumentRoot “/web/vhosts/www2”
    ServerName www2.a2.com
    ErrorLog “/var/log/httpd/www2.err”
    CustomLog “/var/log/httpd/www2.access” common
</VirtualHost>

2)设置监听地址
Listen 80
Listen 8080

3)检查然后重新加载服务,测试

3、基于 FQDN 的 virtualhost
1)开启虚拟主机域名
NameVirtualHost 192.168.1.100:80

2)编辑配置文件设置如下:
<VirtualHost 192.168.1.100:80>
    DocumentRoot “/web/vhosts/www1”
    ServerName www1.a1.com
    ErrorLog “/var/log/httpd/www1.err”
    CustomLog “/var/log/httpd/www1.access” common
</VirtualHost>
 
<VirtualHost 192.168.1.100:80>
    DocumentRoot “/web/vhosts/www2”
    ServerName www2.a2.com
    ErrorLog “/var/log/httpd/www2.err”
    CustomLog “/var/log/httpd/www2.access” common
</VirtualHost>

3)解析域名,此处我就用 hosts 文件来解析了
[root@linuxidc ~]# vim /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.0.1  server.magelinux.com server
192.168.1.100  www1.a1.com
192.168.1.100  www2.a2.com

4)检查加载服务,测试即可

四、httpd-2.2 的基于 https 的安全访问
###CA 服务器上操作:
1)生成密钥对密钥对
[root@linuxidc CA]# (umak 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2)生成自签证书
[root@linuxidc CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
 
Country Name (2 letter code) [XX]:CN ## 国家
State or Province Name (full name) []:beijing ## 省
Locality Name (eg, city) [Default City]:beijin  ## 市
Organization Name (eg, company) [Default Company Ltd]:magedu.com  #公司名称
Organizational Unit Name (eg, section) []:yunwei  ## 部门
Common Name (eg, your name or your server’s hostname) []:linuxidc ##ca 域名
Email Address []:admin@163.com #邮箱

3)为 CA 提供所需目录及文件
[root@linuxidc CA]# touch {serial,index.txt}
[root@linuxidc CA]# echo 01 > serial

###httpd 服务器上操作:
1)生成密钥
 [root@linuxidc ~]# mkdir /etc/httpd/ssl
[root@linuxidc ~]# cd /etc/httpd/ssl/
[root@linuxidc ssl]# (umask 077;openssl genrsa -out /etc/httpd/)
conf/    conf.d/  logs/    modules/ run/    ssl/     
[root@linuxidc ssl]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

2)生成证书签署请求
[root@linuxidc ssl]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
 
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijin
Organization Name (eg, company) [Default Company Ltd]:magedu.com
Organizational Unit Name (eg, section) []:yunwei
Common Name (eg, your name or your server’s hostname) []:linuxidc
Email Address []:admin@163.com

3)在 CA 上签署证书,并将证书方式给请求者
[root@linuxidc tmp]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
[root@linuxidc certs]# scp httpd.crt root@192.168.1.100:/etc/httpd/ssl

4)httpd 要支持 SSL 需要安装 mod_ssl 模块
[root@linuxidc ~]# yum -y install mod_ssl

5)配置 /etc/httpd/conf.d/ssl.conf
<VirtualHost 192.168.1.100:443> ## 此行 IP 地址需要按照你自己需求更改
DocumentRoot “/web/vhosts/www1”
ServerName 
 
SSLCertificateFile /etc/httpd/ssl/httpd.crt 
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key  ## 证书私钥

6)检查配置文件,重新加载,测试即可
[root@linuxidc ssl]# httpd -t 
Syntax OK
[root@linuxidc ssl]# service httpd reload 
Reloading httpd:

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133338.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10715字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7982327
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...