Centos7 Apache配置虚拟主机的三种方式

Centos7 Apache配置虚拟主机的三种方式

https://blog.csdn.net/tladagio/article/details/80760261

一、虚机主机的三种方式

1、基于IP

2、基于IP+端口

3、基于域名

官网文档:http://httpd.apache.org/docs/2.4/

二、安装Apache

1、系统环境

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[root@localhost ~]# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:5c:ff:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.253.128/24 brd 192.168.253.255 scope global dynamic eno16777736
       valid_lft 1388sec preferred_lft 1388sec
    inet6 fe80::20c:29ff:fe5c:ff91/64 scope link 
       valid_lft forever preferred_lft forever

2、yum安装

[root@localhost ~]# yum install -y httpd
*****
======================================================================================================================================================
 Package                             架构                           版本                                           源                            大小
======================================================================================================================================================
正在安装:
 httpd                               x86_64                         2.4.6-80.el7.centos                            base                         2.7 M
为依赖而安装:
 apr                                 x86_64                         1.4.8-3.el7_4.1                                base                         103 k
 apr-util                            x86_64                         1.5.2-6.el7                                    base                          92 k
 httpd-tools                         x86_64                         2.4.6-80.el7.centos                            base                          89 k
 mailcap                             noarch                         2.1.41-2.el7                                   base                          31 k
***
已安装:
  httpd.x86_64 0:2.4.6-80.el7.centos                                                                                                                  
 
作为依赖被安装:
  apr.x86_64 0:1.4.8-3.el7_4.1     apr-util.x86_64 0:1.5.2-6.el7     httpd-tools.x86_64 0:2.4.6-80.el7.centos     mailcap.noarch 0:2.1.41-2.el7    
 
完毕!

可以查看安装了内容

[root@localhost ~]# rpm -ql httpd | less

3、配置Selinux文件,SELINUX=disabled。

[root@localhost ~]# vim /etc/selinux/config

SELINUX=disabled

SELINUXTYPE=targeted

或者临时关闭

[root@localhost ~]# setenforce 0

4、关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

5、启动httpd服务,访问测试

[root@localhost ~]# systemctl start httpd

Centos7 Apache配置虚拟主机的三种方式

三、修改主配置文件

1、查看apache主配置文件,确保存在以下配置,因为等下需要在conf.d/创建虚机主机配置。

[root@localhost ~]# vim  /etc/httpd/conf/httpd.conf 

IncludeOptional conf.d/*.conf

2、另外,把 Require all denied默认拒绝访问设置为允许访问: Require all granted,方便测试。

<Directory />
    AllowOverride none
#  Require all denied
    Require all granted
</Directory>

四、新增虚拟主机配置文件

1、添加基于多个IP的虚拟主机

1)创建配置文件

    [root@localhost ~]# cd /etc/httpd/conf.d/
    [root@localhost conf.d]# vim virtual.conf

 

<VirtualHost 192.168.253.128:80>
        ServerName a.com
        DocumentRoot "/www/a.com/"    #网页路径
</VirtualHost>

<VirtualHost 192.168.253.129:80>
        ServerName b.com
        DocumentRoot "/www/b.com/"    #网页路径
</VirtualHost>

2)网卡绑定多个IP(我的网卡名是eno16777736,不是eth0)

[root@localhost conf.d]# ip addr add 192.168.253.129 dev eno16777736
[root@localhost conf.d]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:5c:ff:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.253.128/24 brd 192.168.253.255 scope global dynamic eno16777736
       valid_lft 1542sec preferred_lft 1542sec
    inet 192.168.253.129/32 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:ff91/64 scope link 
       valid_lft forever preferred_lft forever

 

3)创建虚机主机a.com和b.com的主页面

[root@localhost conf.d]# mkdir -pv /www/{a.com,b.com}
mkdir: 已创建目录 "/www"
mkdir: 已创建目录 "/www/a.com"
mkdir: 已创建目录 "/www/b.com"

[root@localhost conf.d]# vim /www/a.com/index.html

<h1>Hello,a.com</h1>

[root@localhost conf.d]# vim /www/b.com/index.html

<h1>Hello,b.com</h1>

4)检查配置文件是否正常

    [root@localhost conf.d]# httpd -t
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    Syntax OK

5)重启httpd服务

[root@localhost conf.d]# systemctl restart httpd

6)打开浏览器,查看结果

Centos7 Apache配置虚拟主机的三种方式

Centos7 Apache配置虚拟主机的三种方式

2、配置基于IP+端口的虚拟主机

1)创建配置文件

    [root@localhost ~]# cd /etc/httpd/conf.d/
    [root@localhost conf.d]# vim virtual.conf

 

<VirtualHost 192.168.253.128:80>
        ServerName a.com
        DocumentRoot "/www/a.com/"
</VirtualHost>

<VirtualHost 192.168.253.128:8080>
        ServerName b.com
        DocumentRoot "/www/b.com/"
</VirtualHost>

2)修改httpd主配置文件,在Listen 80下面添加一行监控8080端口

[root@localhost conf.d]# vim /etc/httpd/conf/httpd.conf

Listen 8080

3)创建虚机主机a.com和b.com的主页面(如果前面已经创建就不用重复)

    [root@localhost conf.d]# mkdir -pv /www/{a.com,b.com}
    mkdir: 已创建目录 "/www"
    mkdir: 已创建目录 "/www/a.com"
    mkdir: 已创建目录 "/www/b.com"

[root@localhost conf.d]# vim /www/a.com/index.html

<h1>Hello,a.com</h1>

[root@localhost conf.d]# vim /www/b.com/index.html

<h1>Hello,b.com</h1>

4)检查配置文件

    [root@localhost conf.d]# httpd -t
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    Syntax OK

 

5)重启httpd服务

[root@localhost conf.d]# systemctl restart httpd

6)打开浏览器,查看结果

Centos7 Apache配置虚拟主机的三种方式

Centos7 Apache配置虚拟主机的三种方式

3、基于域名的虚拟主机

1)创建配置文件

    [root@localhost ~]# cd /etc/httpd/conf.d/
    [root@localhost conf.d]# vim virtual.conf

<VirtualHost *:80>
        ServerName a.com
        DocumentRoot "/www/a.com/"
</VirtualHost>

<VirtualHost *:80>
        ServerName b.com
        DocumentRoot "/www/b.com/"
</VirtualHost>

 

2)修改物理主机hosts文件(C:\Windows\System32\drivers\etc),因为这里是因为物理机去访问Apache服务器

添加:

192.168.253.128 a.com

192.168.253.128 b.com

3)物理主机ping域名测试

Centos7 Apache配置虚拟主机的三种方式

4)创建虚机主机a.com和b.com的主页面(如果前面已经创建就不用重复)

    [root@localhost conf.d]# mkdir -pv /www/{a.com,b.com}
    mkdir: 已创建目录 "/www"
    mkdir: 已创建目录 "/www/a.com"
    mkdir: 已创建目录 "/www/b.com"

 

[root@localhost conf.d]# vim /www/a.com/index.html

<h1>Hello,a.com</h1>

[root@localhost conf.d]# vim /www/b.com/index.html

<h1>Hello,b.com</h1>

5)检查配置文件

    [root@localhost conf.d]# httpd -t
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    Syntax OK

 

6)重启httpd服务

[root@localhost conf.d]# systemctl restart httpd

 

7)打开浏览器,查看结果

Centos7 Apache配置虚拟主机的三种方式

Centos7 Apache配置虚拟主机的三种方式

五、扩展虚机主机配置文件

1、先修改回apache主配置文件,设置 Require all denied默认拒绝访问

<Directory />
    AllowOverride none
    Require all denied

</Directory>

 

这时候再去访问以上的三种配置虚机主机,会全部访问不了。因此需要针对虚机目录设置访问权限。

2、修改虚拟主机配置文件

    [root@localhost ~]# cd /etc/httpd/conf.d/
    [root@localhost conf.d]# vim virtual.conf

<VirtualHost *:80>
        #绑定的主域
        ServerName a.com
        #绑定的子域名
        ServerAlias www.test.com
        #网站主目录
        DocumentRoot “/www/a.com/”
        #错误日志目录
        ErrorLog  “/var/log/httpd/a.com/error.log”
        #访问日志目录
       CustomLog “/va/log/httpd/a.com.access.log”
<Directory “www/a.com/”>
        Options FollowSymLinks
        AllowOverride All
        #允许任意访问
        Require all granted
</Directory>
</VirtualHost>

3、创建日志目录

  1. [root@localhost b.com]# cd /var/log/httpd/

  2. [root@localhost httpd]# mkdir a.com

  3. [root@localhost httpd]# ll

  4. 总用量 60

  5. -rw-r
    –r–. 1 root root 37976 1月 23 22:26 access_log

  6. drwxr-xr-x. 2 root root 6 1月 23 22:41 a.com

  7. -rw-r
    –r–. 1 root root 17795 1月 23 22:38 error_log

  8. [root@localhost httpd]# cd a.com/

  9. [root@localhost a.com]# touch error.log

  10. [root@localhost a.com]# touch access.log

日志目录记得更改属主和属组为Apache,否则httpd启动失败

[root@localhost httpd]# chown -R apache:apache a.com/

4、配置指定IP可以访问虚拟主机(可以单个IP,也可以是一个网段)

[root@localhost conf.d]# vim /etc/httpd/conf.d/virtual.conf
  1. <VirtualHost *:80>

  2. #绑定的主域

  3. ServerName a.com

  4. #绑定的子域名

  5. ServerAlias www.test.com

  6. #网站主目录

  7. DocumentRoot “/www/a.com/”

  8. #错误日志目录

  9. ErrorLog “/var/log/httpd/a.com/error.log”

  10. #访问日志目录

  11. CustomLog “/va/log/httpd/a.com.access.log”

  12. <Directory “www/a.com/”>

  13. Options FollowSymLinks

  14. AllowOverride All

  15. #允许任意访问

  16. Require ip 192.168.253.0/24

  17. </Directory>

5、配置指定用户可以访问虚拟主机

[root@localhost conf.d]# vim /etc/httpd/conf.d/virtual.conf

 
    <VirtualHost *:80>
    #绑定的主域
    ServerName a.com
    #绑定的子域名
    ServerAlias www.test.com
    #网站主目录
    DocumentRoot "/www/a.com/"
    #错误日志目录
    ErrorLog "/var/log/httpd/a.com/error.log"
    #访问日志目录
    CustomLog "/va/log/httpd/a.com.access.log"
    <Directory "www/a.com/">
    Options FollowSymLinks
    AllowOverride authconfig
    AuthType basic
    AuthName "Restrict area"
    AuthUserFile "etc/httpd/.htpasswd"
    Require valid-user
    </Directory>

 

创建用户文件,第一次创建的时候要加-c,以后创建都不用加-c,否则会覆盖原数据

    [root@localhost conf.d]# pwd
    /etc/httpd/conf.d
    [root@localhost conf.d]# htpasswd -h
    htpasswd: illegal option -- h
    Usage:
    htpasswd [-cimBdpsDv] [-C cost] passwordfile username
    htpasswd -b[cmBdpsDv] [-C cost] passwordfile username password
     
    htpasswd -n[imBdps] [-C cost] username
    htpasswd -nb[mBdps] [-C cost] username password
    -c Create a new file.
    -n Don't update file; display results on stdout.
    -b Use the password from the command line rather than prompting for it.
    -i Read password from stdin without verification (for script usage).
    -m Force MD5 encryption of the password (default).
    -B Force bcrypt encryption of the password (very secure).
    -C Set the computing time used for the bcrypt algorithm
    (higher is more secure but slower, default: 5, valid: 4 to 31).
    -d Force CRYPT encryption of the password (8 chars max, insecure).
    -s Force SHA encryption of the password (insecure).
    -p Do not encrypt the password (plaintext, insecure).
    -D Delete the specified user.
    -v Verify password for the specified user.
    On other systems than Windows and NetWare the '-p' flag will probably not work.
    The SHA algorithm does not use a salt and is less secure than the MD5 algorithm.
    [root@localhost conf.d]# htpasswd -c -m /etc/httpd/.htpasswd tom
    New password:
    Re-type new password:
    Adding password for user tom

 

重启httpd服务

    [root@localhost conf.d]# httpd -t
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    Syntax OK
    [root@localhost conf.d]# systemctl restart httpd

 

在浏览器测试登录

Centos7 Apache配置虚拟主机的三种方式

Centos7 Apache配置虚拟主机的三种方式

6、Require参考

Require all granted
无条件允许访问。
Require all denied
访问被无条件拒绝。
Require env env-var [env-var] …
只有在给定的环境变量之一被设置的情况下才允许访问。
Require method http-method [http-method] …
只有给定的HTTP方法才允许访问。
Require expr expression
如果表达式计算结果为true,则允许访问。
Require user userid [userid] …
只有指定的用户才能访问资源。
Require group group-name [group-name] …
只有指定组中的用户才能访问资源。
Require valid-user
所有有效的用户都可以访问资源。
Require ip 10 172.20 192.168.2
指定IP地址范围内的客户端可以访问资源。

7、Options

None:不支持任何选项
Indexes:允许索引目录
FollowSymLinks:允许访问符号链接指向的原文件
Includes:允许执行服务端包含(SSI)
ExecCGI:允许允许CGI脚本
ALL:支持所有选项

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tladagio/article/details/80760261
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113042.html原文链接:https://javaforall.net

(0)
上一篇 2021年10月25日 下午5:00
下一篇 2021年10月25日 下午6:00


相关推荐

  • 红色故障码大全_图论的最短路问题

    红色故障码大全_图论的最短路问题原题链接战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的

    2022年8月8日
    3
  • 代理模式proxy_反向代理是什么

    代理模式proxy_反向代理是什么代理模式 Proxy动机模式定义实例结构要点总结笔记动机在面向对象系统中,由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程额外的访问等),直接访问会给使用者,或者系统结构带来很多麻烦.如何在不是去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接曾是软件开发中常见的解决方式模式定义为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问实例朴素客户端要去使用process 但是process周围需要做很多事情class ISubject{p

    2022年8月9日
    9
  • numpy安装过程

    numpy安装过程下载 numpy 库的详细方法安装前提 1 Python3 8 安装完成并能够正常使用 2 下载相应的 numpy 安装包 whl 格式安装详细步骤 首先 点击下面的链接进入 numpy 下载官网链接地址 添加链接描述进去之后 点击文档下载 进入界面 cp37 指对应的 Python 版本 还要注意后面的 32 64 是你的系统然后点击下载 下载到你 Python 下面的 Scripts 文件夹下 打开 cmd 输入命令行 pipinstallnu 文件名 whl 出现 Successfulin

    2025年9月7日
    6
  • iframe高度自适应_读取跨域iframe

    iframe高度自适应_读取跨域iframe采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域、跨域两种情况。由于客户端js使用浏览器的同源安全策略,跨域情况下,被嵌套页面如果想要获取和修改父页面的DOM属性会出现权限不足的情况,提示错误:Permissiondeniedtoaccessproperty’document’。这是

    2022年10月12日
    5
  • icem网格划分如何给内部面网格,ICEM CFD处理混合网格划分中低质量的问题

    icem网格划分如何给内部面网格,ICEM CFD处理混合网格划分中低质量的问题所谓的混合网格,指的是模型中同时存在结构网格与非结构网格的情况。采用混合网格的主要优势在于:对于复杂的几何,我们可以将其分解成多个几何,对于适合划分结构网格的采用结构网格划分方式,而对于非常复杂的部分,可以使用非结构方式进行划分。然而采用混合网格也有一些缺点:交接面位置网格质量会非常差。因此我们需要采用一些方式对网格质量进行改善。另外对于交界面的处理也存在一些问题。我们先说说在ICEMCFD中进…

    2022年5月26日
    42
  • 开始

    开始

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号