详解CentOS配置和管理web服务-Apache

简介:

目录

  • 1、web介绍

  • 2、web历史和工作原理

  • 3、http请求流程

  • 4、关于Apache

  • 5、Apache服务器软件安装使用

  • 6、符号链接和虚拟目录

  • 7、页面重定向

  • 8、Apache日志文件

  • 9、Apache安全配置

  • 10、虚拟主机

    • 10.1、基于IP

    • 10.2、基于域名

    • 10.3、基于端口    

web服务器配置和管理

http协议简介

http协议,全称HyperText Transfer Protocol,中文名称超文本传输协议,是互联网应用最为广泛的一种网络协议,所有的www都必须遵守这个标准,设计http最初的目的为了提供一种发布和接收HTML(一种页面标记语言)

web服务器介绍

万维网又称web(world wide web,www),是在internet上以超文本为基础形成的信息网,用户可以通过浏览器可以访问web服务器上面的信息资源

web服务的历史和工作原理

web服务的历史

Internet上最热门的服务之一就是万维网,它是因特网上以超文本为基础形成的信息网,用户可以通过查阅Internet上的信息资源,例如:平时上网使用浏览器访问网站信息的最常见应用。


web在1989年起源于欧洲的一个国家核能源研究院中,由于随着研究的深入和发展,研究院的文件越来越多,而且人员流动非常大,要找到相关的资料是非常困难的,于是一个科学家就提出这样的一个建议,咋服务器上维护一个目录,目录的链接指向每个人的文件,每个人维护自己的文件,保证别人访问的时候总是最新的文档,这个建议得到了采纳并不断的完善后,最终形成如今Internet上最常见的www服务

web的工作原理

web系统是客户端/服务端的C/S架构,所以有服务器端端和客户端程序两个部分,常用的服务器端软件有Apache,IIS,nginx等,常见的客户端浏览器有IE,Mozilla等,用户在浏览器地址栏中输入资源定位地址(URL)来访问web页面


web页面是以超文本标记语言(HTML)进行编写,它是文本不在是传统的书页方式文本,而是可以在浏览器上面从一个页面跳转到另一个页面,使用HTML语言编制的web除了文本意外还可以嵌入视频,音乐,图象等

wKioL1f2fdWiVss5AADwA4EAD84609.png

浏览一个页面时,(比如http://www.baidu.com/index.html)浏览器会向服务器www.baidu.com发送一条HTTP请求,服务器会去寻找所期望的对象(在这个例子就是/index.html),如果发送成功,就将对象,对象类型,对象长度以及其他一些信息放在http响应中发给客户端

[root@localhost ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Server: bfe/1.0.8.18
Date: Thu, 06 Oct 2016 07:23:46 GMT
Content-Type: text/html
Content-Length: 277
Last-Modified: Mon, 13 Jun 2016 02:50:09 GMT
Connection: Keep-Alive
ETag: "575e1f61-115"
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache
Accept-Ranges: bytes

http协议请求原理过程图

wKiom1f2fe3ys2ThAADfWzPyWtc678.png

一次完整的Http请求处理过程:

        (1) 建立或处理连接请求;
       (2) 接收请求;
       (3) 解析请求,处理请求;
       (4) 加载用户请求的资源;
       (5) 构建响应报文;
       (6) 发送响应报文;
       (7) 记录访问于日志中;

访问错误响应码

            1xx:
           2xx: 成功响应
           3xx: 重定向响应
           4xx: 客户端错误
           5xx: 服务端错误

知名Web服务

某个网站统计的web软件排名

wKioL1f2fgrz_8xvAAC6wvjbyas121.png

Windows系统中默认Web服务程序是IIS(Internet Information Services),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP、NMTP、SMTP等服务功能,但只能在Windows系统中使用。


nginx——最初于2004年10月4日为俄罗斯知名门户站点而开发的,作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而深受信赖,但最最最被认可的是低系统资源、占用内存少且并发能力强,目前国内如新浪、网易、腾讯等门户站均使用。


Apache——取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源、跨平台(可运行于Unix,linux,windows中)。


Tomcat——属于轻量级的Web服务软件,一般用于开发和调试JSP代码,通常认为Tomcat是Apache的扩展程序。

关于Apache服务

Nginx程序作为Web服务软件届的后起之秀已经通过自身的努力与优势赢得了大批站长的信赖,不得不说真的很棒!但是Apache程序作为老牌的Web服务软件因其卓越的稳定性与安全性成为了红帽RHEL7系统中默认的网站服务软件,同样也是红帽RHCSA与RHCE考试认证中避不开的考题。

Apache简介

Apache是一种开源的httpd服务器软件,可以在UNIX、Linux以及Windows在内的大多数主流计算机操作系统系统上面运行,Apache是由Illinois大学Urbana-Champaign的国家高级计算机程序中心开发,它的名字取自apatchy server 的读音,即充满补丁的服务器,可见在最初的时候该程序并不是非常完善

Apache优点

但由于Apache是开源软件,所以得到开源社区的支持,不断开发出新的功能特性,并修补了原来的缺陷,经过多年不断的完善,如今的Apache已经是最流行的web服务端软件之一Apache拥有以下众多的特性,保证了它可以高速稳定的运行

支持所有的计算机平台
简单有效的配置文件
支持虚拟主机
支持多种方式的http认证
集成Perl脚本语言
集成代理服务器模块
支持实时监视服务器状态和定制服务器日志
支持服务器端包含指令
支持Php
支持第三方软件开发商提供的软件
Apache模块化

Apache服务器的安装使用

httpd相关软件及安装

httpd-2.2.15-29.el6_4.x86_64.rpm                //服务端主程序包,服务器运行核心软件包
httpd-devel-2.2.15-29.el6_4.x86_64.rpm          //apache开发程序包,如开发附加模块的时候需要此软件
httpd-manual-2.2.15-29.el6_4.noarch.rpm     //Apache手册文档
httpd-tools-2.2.15-29.el6_4.x86_64.rpm          //一起apache的工具,如htpasswd
apr-devel-1.3.9-5.el6_2.x86_64.rpm              //安装httpd-devel的时候的依赖包
apr-util-devel-1.3.9-3.el6_0.1.x86_64.rpm           //安装httpd-devel的时候的依赖包
expat-devel-2.0.1-11.el6_2.x86_64.rpm           //安装httpd-devel的时候的依赖包

安装Apache

Linux基本都自带Apache软件

[root@localhost ~]# ls /mnt/Packages/ | grep "httpd"
httpd-2.2.15-53.el6.centos.x86_64.rpm
[root@localhost ~]# yum install -y httpd httpd-manual
[root@localhost ~]# yum install -y elinks  //这是一个字符界面浏览器 使用方式 “elinks 域名”
[root@localhost ~]# service httpd restart          //服务启动
[root@localhost ~]# chkconfig httpd on         //服务开机启动
[root@localhost ~]# netstat -antup | grep 80       //启动是否成功,查看端口是否开放

相关文件

[root@localhost ~]# ls /etc/httpd/                 //apache工作目录,配置文件目录
[root@localhost ~]# ls /etc/httpd/conf/httpd.conf          //yum或rpm方式安装的配置文件位置
[root@localhost ~]# ls /etc/httpd/conf.d/          //这个是默认httpd.conf里面include位置
[root@localhost ~]# ls /var/log/httpd/                 //默认日志目录
[root@localhost ~]# ls /var/log/httpd/access_log           //默认访问日志
[root@localhost ~]# ls /var/log/httpd/error_log            //默认错误日志
[root@localhost ~]# ls /var/www/html/                  //默认网站根目录
[root@localhost ~]# ls /etc/httpd/modules/             //apache库文件,模块文件目录
[root@localhost ~]# ls /etc/httpd/run/httpd.pid            //apache运行的进程pid
[root@localhost ~]# ls /var/www/manual/                    //apache手册也,需要安装httpd-manual

查看Apache的相关信息

查看Apache软件版本信息

[root@localhost ~]# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   May 11 2016 19:28:33
Server's Module Magic Number: 20051115:25
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
 threaded:     no
   forked:     yes (variable process count)

查看已经被编译的模块

[root@localhost ~]# httpd -l
Compiled in modules:
 core.c
 prefork.c
 http_core.c
 mod_so.c

httpd.conf主配置文件的解释

ServerTokens OS                     #返回操作系统类型,如apache/2.0.54(unix)
ServerRoot "/etc/httpd"             #服务器配置文件目录
ServerName 192.168.1.235:80     #服务器主机名
PidFile run/httpd.pid               #apache运行进程ID存放
Timeout 60                          #超时时间,多少s没有反应就超时
KeepAlive Off                       #是否允许一个永久的链接,设置为OFF的时候,不能保持连接功能,传输效率比较低,设置为ON时,可以提高服务器传输文件的效率,建议开启
MaxKeepAliveRequests 100        #设置KeepAlive为ON时,设置客户端每次连接允许请求相应最大文件数,默认100个
KeepAliveTimeout 15                 #超时时间,同一个客户端下一个请求15s没收到就超时
Listen 80                          #监听端口,默认本地IP,如果指定ip写上IP:80
<IfModule prefork.c>
StartServers       8               #服务开始起启动8个进程
MinSpareServers    5                #最小空闲5个进程
MaxSpareServers   20                #最多空闲20个进程
ServerLimit      256              #服务器允许配置进程数上线
MaxClients       256                #最大连接数256,超过要进入等候队列
MaxRequestsPerChild  4000       #每个进程生存期内服务最大的请求数量,0表示用不结束
</IfModule>
<Directory />
   Options FollowSymLinks          #Options Indexes 目录浏览  FollowSymLinks用连接浏览
   AllowOverride None          #设置为none,忽略.htaccess
</Directory>
LoadModule auth_basic_module modules/mod_auth_basic.so          #载入的库,模块
● ● ● ● ● ●
Include conf.d/*.conf               #conf.d里面的conf文件也属有效配置文件
User apache                         #apache运行以哪个身份运行
Group apache                        #apache运行以哪个组的身份运行
ServerAdmin root@localhost          #管理员邮箱
DocumentRoot "/var/www/html"        #默认的主目录,如果改动要改动两处,Directory
<Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny                #这里默认后者生效,也就是deny生效
   Allow from all                      #这里说允许所有
</Directory>
LogLevel warn                               #日志等级
DirectoryIndex index.html index.html.var        #首页
AccessFileName .htaccess                        #access文件名
AddDefaultCharset UTF-8                     #支持的语言,默认编码
#配置文件的最后是虚拟主机的字段,其中你大部分字段做个了解即可,用到的时候去查即可

检测配置文件语法

[root@localhost ~]# cat /etc/httpd/conf/httpd.conf | grep "^Listen"            //修改web端口为55667
Listen 55667
[root@localhost ~]# apachectl configtest
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
Syntax OK
[root@localhost ~]# service httpd reload           //切记http服务不可以随便重启,修改配置文件要重新载入配置文件
Reloading httpd:

wKioL1f2fi3jdkCOAABLS0FZopk753.png

创建一个测试首页

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# echo "<h1>zhang789.blog.51cto.com</h1>" >> index.html
[root@localhost html]# ll
total 4
-rw-r--r-- 1 root root 33 Oct  6 09:06 index.html

wKiom1f2fkjwIdm-AAAwtc4SVyU662.png

符号链接和虚拟目录

DocumentRoot的参数是指定web发布文档的主目录,在默认情况下,用户通过http访问web服务器浏览的所有资料都是存在该目录下,该参数只能设置一个目录作为参数值,那么是不是在Apache中就能有一个目录存放文档文件呢?如果文档根目录空间不足,要放到其他的文件系统中应该怎么办,

符号链接

例如:/var/www/html/doc这个目录,希望吧/usr/share/doc目录映射成/var/www/html/doc,配置就是一个软连接就行

[root@localhost html]# ln -s /usr/share/doc/ doc
[root@localhost html]# ll
total 4
lrwxrwxrwx 1 root root 15 Oct  6 09:49 doc -> /usr/share/doc/
-rw-r--r-- 1 root root 33 Oct  6 09:06 index.html

wKiom1f2fmKgJY5zAACmIOJTar8285.png

虚拟目录(别名)

使用虚拟目录是另一种将根目录以外的内容加入站点中的办法,下面举一个简单的例子,把/var/log目录映射成网站根目录下的/log下 
1、打开httpd.conf文件,添加如下内容

Alias /log "/var/log"
<Directory "/var/log/">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

2、重载httpd服务,然后访问加资源URL/log路径

wKiom1f2foyDrSG1AAByAK-AB50837.png

页面重定向

如果用户经常访问某个网站的网页,他很可能会把页面的URL添加到收藏夹,在每次访问网站的时候,可以直接点击收藏夹的记录访问,但是如果网站进行了目录架构的更改,用户再使用原来的URL访问时就会出现404页面无法找到的错误,为了方便用户能够使用原来的URL进行访问,这时就需要页面重定向了

假设网站有一个doc目录,现在管理员要对网站的目录结构就行整理,并把/doc目录移动到/old-doc目录下,如果用户还是访问原来的URL就会出现404的错误,

1、打开httpd.conf配置文件,添加如下内容

Alias /old-doc "/usr/share/doc"
<Directory "/usr/share/doc">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>
#指定当用户访问/doc目录遇到404错误自动重定向到http://192.168.211.128:55667/old-doc
Redirect 303 /doc http://192.168.211.128:55667/old-doc

2、重载httpd服务 
3、使用浏览器再次访问

wKioL1f2frTQk2CHAACCLaTV0vQ993.png

Apache日志文件

Apache运行会生成两个日志文件,access_log(访问日志)error_log(错误日志)

[root@localhost httpd]# pwd
/var/log/httpd
[root@localhost httpd]# ls
access_log  error_log

1、访问日志文件

Apache的访问日志就是记录web服务器的所有访问活动(如下图)

wKioL1f2ftfj8vA_AAFo3tr68oY343.png从文件内容可以看出,每一行都记录了一次访问记录,由7个部分组成

192.168.211.1 - - [06/Oct/2016:10:23:26 +0800] "GET /old-doc/ HTTP/1.1" 200 149404 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36"
//客户端地址、访问者的标示、访问者的验证名字、请求的时间、请求类型、请求的http代码、发送给客户端的字节数

7部分详细说明 
客户端地址:表明访问网站的客户端IP地址 
访问者的标示:该项一般为空白,用“-”代替 
访问者验证的名字:该项用于记录访问者进行身份验证时提供的名字,一般情况下该项也为空白 
请求的时间:记录访问操作的发生时间 
请求类型:该项记录了服务器收到是一个什么类型的请求,一般类型包括GET、post、HEAD 
请求的代码:通过该项信息可以知道请求是否成功,遇到了什么样的问题错误,正常情况下,为200 
发送给客户端的字节数:表示发送给客户端的总的字节数,通过检查该数值是否和文件大小相同,可以知道传输是否被中断

2、错误日志

错误日志是Apache提供的另外一种标准日志,该日志记录了Apache服务运行过程发生的错误日志,httpd.conf配置文件中提供了一下两个配置参数:

ErrorLog logs/error_log
LogLevel warn

它们分别用于配置错误日志的位置和日志的级别 
日志的级别说明

严重程度     等级     说明
1           emerg   系统不可以用
2           alert   需要立即引起注意的情况
3           crit    危急情况
4           error   错误信息
5           warn    警告信息
6           notiee  需要引起注意的情况
7           info    一般信息
8           debug   由运行于debug模式的程序输出的信息

emerg级别的信息最为严重,debug级别最低,如果用户吧错误日志设置成warn级别,则严重程度由1-5会被记录下来

wKiom1f2fyvjqQRSAAERvWLRlc4230.png从文件内容可以看出,每一行记录了一个错误,由3个部分组成, 
时间 错误等级 错误信息

[Thu Oct 06 10:22:24 2016] [error] [client 192.168.211.1] Directory index forbidden by Options directive: /usr/share/doc/

第一个括号是错误发生的时间 2016年10月06 10:22:24 
第二个是错误等级:error 
第三个是错误的内容:[客户192.168.211.1]目录索引选项禁止指令:/usr/share/doc/

Apache安全配置

Apache提供了多种安装控制手段,包括web访问控制,用户登录密码设置及.htaccess文件

访问控制

访问控制是提高apache服务器安全级别的最有效的手段之一,看下Diertory段,Diertory段用于设置与目录相关的参数和指令,包括访问控制和认证

<Diretory 目录的路径> 
           目录相关的配置参数和指令
</Diretory>

每个Diretory段以<Diretory>开始</Diretory>结束,<Diretory>指定目录及其里面的所有文件和子目录,在段中可以设置与目录相关的参数和指令,包括访问控制和认证

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

1、Allow 指令 
Allow指令用于设置那些客户端可以访问Apache

Allow for [All/全域名/部分域名/ip地址/网络地址/cidr地址。。。]

all表示所有客户端 
全域名:表示域名对应的客户端 www.baidu.com 
部分域名:表示域内的所有客户端 baidu.com 
IP地址:如172.16.2.1 
网络地址:如192.168.1.0/256.356.355.0 
CIDR地址:172.16.20.0/24

2、Deny指令 
Deny指令用户设置拒绝那些客户端访问Apache,格式和Allow一样

3、Order指令 
Order指令用于指定访问规则的先后顺序,有一下两种

Order Allow,Deny;先执行允许访问规则,在执行拒绝访问规则
Order Deny,Allow;  先执行拒绝访问规则,在执行允许访问规则

实例: 
现在,假设网站中一个logo目录,是登录网站后台的目录,所以网站管理员希望该目录只能由该网站管理员访问(192.168.211.1),其他都不能访问

1、打开httpd.conf配置文件添加如下内容

<Directory "/var/www/html/log">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order deny,allow
   Deny from all
   Allow from 192.168.211.1
</Directory>
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
Syntax OK
[root@localhost httpd]# service httpd reload
Reloading httpd:

wKiom1f2f0_QkX3sAAAqv8-mI8I376.png

用户认证

Apache的用户认证方式包括基本(Basic)认证和摘要(Digest)认证两种,摘要认证比基本认证更加安全,但有个别浏览器不支持,基本认证很简单,当用户在浏览器输入认证模式的URL时候,会弹出一个对话框,要求输入账户密码,当用户输入后,web服务验证他的正确性,如果正确,则返回页面,错误则返回401页面

要使用用户认证,首先要创建好用户名和密码,在Apache中提供htpasswd命令用于创建和修改密码文件,该命令在<apache 安装目录>/support目录下

要在/etc/httpd/conf/下创建一个名为users的认证密码文件,并在密码文件添加sam用户

[root@localhost ~]# htpasswd -c /etc/httpd/conf/users sam
New password:
Re-type new password:
Adding password for user sam

认证密码文件创建后,如果再向users文件添加一个ken的用户 不加-C

[root@localhost ~]# htpasswd /etc/httpd/conf/users ken
New password:
Re-type new password:
Adding password for user ken

与/etc/passwd文件类似,认证密码都是一行一个

[root@localhost ~]# cat /etc/httpd/conf/users 
sam:fGNODsapTMn72
ken:8HenVGxWHKF8A
用户名:加密后的密码

htpasswd没有删除账户指令,直接在配置文件里面删除

创建完成认证密码后,还要对配置文件进行修改,用户认证是在httpd.conf配置文件中<Directort>段中进行设置

案例: 
现在网站管理员为了更加安全,加强控制,对log目录经过sam用户认证才能访问

1、在httpd.conf配置文件添加如下内容

<Directory "/var/www/html/log">
   Options Indexes FollowSymLinks
   AllowOverride None
   AuthType Basic      //设置认证的方式    
   AuthName "doc"    //设置保护区域的名称
   AuthUserFile /etc/httpd/conf/users   //认证密码的文件
   require user sam    //指定那些用户可以进行访问
   Order deny,allow
   Deny from all
   Allow from 192.168.211.1
</Directory>

2、检测语法,重载服务

[root@localhost ~]# apachectl configtest
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
Syntax OK
[root@localhost ~]# service httpd reload
Reloading httpd:
[root@localhost ~]#

wKioL1f2f-TCok3LAABvdyNVQXE780.png

虚拟主机

虚拟主机就是指将一台物理服务器虚拟多台web服务器,可以有效的节省硬件资源,Apache支持基于IP地址或主机名的虚拟机服务

虚拟主机的介绍

虚拟主机就是将一台物理服务器虚拟成多台web服务器,对于一些小规模的网站,通过web虚拟主机技术、可以跟其他网站共享一台服务器,有效减少系统的运行成本, 
比如说,一家从事web托管的公司,他为企业提供web服务,那么他肯定不会为每个企业准备一台物理服务器,


Apache提供3中虚拟主机方案:基于IP的虚拟主机服务基于主机名的虚拟主机基于端口的虚拟主机

基于IP的虚拟主机

基于IP的虚拟主机,服务上面必须设置多个IP地址,服务器根据请求目的的IP地址来判断请求的是哪个虚拟主机

Apache中是通过httpd.conf配置文件的<VirtualHost>段来配置虚拟主机服务的

<VirtualHost IP地址:主机名[:端口] IP地址:主机名[:端口]...>
   虚拟主机的相关配置参数和指令
<VirtualHost>

案例: 
假设一台服务器上面有两个IP地址,分别为192.168.211.128和192.168.211.130,对应www.server1.com和www.server2.com,现在要根据这两个IP地址来实现虚拟主机 
当客户端访问192.168.211.128访问/var/www/html/server1 
当客户端访问192.168.211.130访问/var/www/html/server2

问题: 
如果服务器只有一个网卡,可以通过单网卡配置多IP来模拟

1、在/var/www/html/server1和server2下,分别生成index.html文件

[root@localhost html]# mkdir server{1,2}
[root@localhost html]# ls
index.html  log  loganalyze  old-doc  server1  server2
[root@localhost server1]# cat index.html
<HTML>
<HEAD>
<TITLE> 基于IP的虚拟主机测试 </TITLE>
</HEAD>
<BODY>
基于IP的虚拟主机测试:<FONT SIZE="6">www.server1.com</FONT>
</BODY>
</HTML>

为了管理方便在/etc/httpd/conf.d/下面创建一个vhost.conf(在httpd.conf主配置里面有指定,conf.d/*.conf都是可生效的文件)

[root@localhost conf.d]# vim /etc/httpd/conf.d/vhost.conf
<VirtualHost 192.168.211.128>
ServerAdmin     admin@zabbix.com
DocumentRoot    /var/www/html/server1
       <Directory"/var/www/html/server1">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server1.log
</VirtualHost>
<VirtualHost 192.168.211.130>
ServerAdmin     admin@zabbix.com
DocumentRoot    /var/www/html/server2
       <Directory"/var/www/html/server2">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server2.log
</VirtualHost>

重载Apache服务访问

wKiom1f2gBzyKVY1AAA6gkF4kyM253.png

wKiom1f2gBzh4VSMAAA4uPvy4PA538.png

 

基于主机名的虚拟主机(域名)

大多数物理机IP有限,基于IP这种方式太浪费IP资源了,更多的都是使用基于域名的虚拟主机服务

http1.1协议中,增加了对主机名的虚拟主机服务的支持,具体的说,当客户端向web服务器发送请求时,客户端想要访问的主机名也通过请求头中的Host语句传递给web服务器,web服务器接受到这个请求后,通过检查Host语言来判断客户端请求的是哪个虚拟主机

与基于IP地址虚拟主机的配置方法不同,用户必须在conf配置文件使用NameVirtualHost参数 
NameVirtualHost IP地址/主机名[:端口]

NameVirtualHost 192.168.211.128
<VirtualHost 192.168.211.128>
ServerName      www.server1.com
DocumentRoot    /var/www/html/server1
       <Directory "/var/www/html/server1">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server1.log
</VirtualHost>
NameVirtualHost 192.168.211.130
<VirtualHost 192.168.211.130>
ServerName      www.server2.com
DocumentRoot    /var/www/html/server2
       <Directory "/var/www/html/server2">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server2.log
</VirtualHost>

检查配置语法,重载httpd服务

wKioL1f2gErREu2RAAA8RGCGooI555.png

wKioL1f2gEuRnGNUAAA-SLIqcKM765.png

基于端口的虚拟主机

在同一IP,同一主机名下,使用监听不同端口,访问时需要加访问的端口。使用不多,一般用来做内网测试使用 
配置文件

<VirtualHost 192.168.211.128:80>
ServerName      www.server1.com
DocumentRoot    /var/www/html/server1
       <Directory "/var/www/html/server1">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server1.log
</VirtualHost>
Listen 8080             //添加监听端口
<VirtualHost 192.168.211.128:8080>
ServerName      www.server2.com
DocumentRoot    /var/www/html/server2
       <Directory "/var/www/html/server2">
            AllowOverride none
            Allow from all
            Order Allow,deny  
       </Directory>
       ErrorLog /log/httpd/vhost_log/error_server2.log
</VirtualHost>

重载服务

wKiom1f2gHORArxeAAA6M6sqaxA341.png

wKioL1f2gHSytigAAABB3pVRwWA319.png



本文转自 好笔记运维 51CTO博客,原文链接:http://blog.51cto.com/zhang789/1859026,如需转载请自行联系原作者


相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
1月前
|
Java 数据库连接 开发工具
web后端-SpringCloud-Config分布配置
web后端-SpringCloud-Config分布配置
|
2天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置PXE服务
PXE是Intel开发的预启动执行环境,允许工作站通过网络从远程服务器启动操作系统。它依赖DHCP分配IP,DNS服务分配主机名,TFTP提供引导程序,HTTP/FTP/NFS提供安装源。要部署PXE服务器,需关闭selinux和防火墙,安装dhcpd、httpd、tftp、xinetd及相关服务,配置引导文件和Centos7安装源。最后,通过syslinux安装引导文件,并创建pxelinux.cfg/default配置文件来定义启动参数。
9 0
|
2天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置postfix服务
安装CentOS7的Postfix和Dovecot,配置Postfix的`main.cf`文件,包括修改完全域名、允许所有IP、启用邮箱等。然后,配置Dovecot的多个配置文件以启用auth服务和调整相关设置。重启Postfix和Dovecot,设置开机自启,并关闭防火墙进行测试。最后,创建邮箱账户并在Windows邮箱客户端中添加账户设置。
9 0
|
2天前
|
Linux 网络安全
Centos6.5安装并配置NFS服务
该内容描述了在Linux系统中设置NFS服务的步骤。首先挂载yum源,然后安装NFS服务,并编辑配置文件。接着,重启rpcbind和NFS服务,可能需要重复此过程以解决初始可能出现的问题。此外,关闭防火墙策略,并再次重启服务。最终,根目录被共享,特定IP网段被允许访问。
9 0
|
7天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
16 0
|
16天前
|
网络协议
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
15 0
|
1月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
30 0
|
1月前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
162 1
|
1月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
10 0
|
1月前
|
运维 Linux 应用服务中间件
Centos7如何配置firewalld防火墙规则
Centos7如何配置firewalld防火墙规则
49 0