在Linux系统中基于自定义配置文件的虚拟主机.

    • 基于ip的多虚拟主机

自定义配置文件

熟悉httpd的配置文件,文件在 /etc/httpd/conf/httpd.conf中。

在此目录下创建配置文件,

[root@192 conf.d]# vim myhost.conf
<directory />
#访问权限,从根目录开始
allowoverride none
require all granted
</directory>
<virtualhost 192.168.71.129:80>
#虚拟主机的配置
#主机通过这个IP地址访问
servername 192.168.71.129
documentroot /var/www/129
#游览器访问的文件路径
</virtualhost>
<virtualhost 192.168.71.130:80>
#虚拟主机的配置
#主机通过这个IP地址访问
servername 192.168.71.130
documentroot /var/www/130
#游览器访问的文件路径
</virtualhost>

注意:需要在超级管理员模式下创建配置文件,否则文件无法保存。

添加IP地址

[root@192 conf.d]# nmcli connection modify ens160 +ipv4.address 192.168.71.130/24
[root@192 conf.d]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

自定义测试页面

/var/www/html

扫描二维码关注公众号,回复: 15259257 查看本文章

    • 基于端口的多虚拟主机

在前基础上对子配置文件进行修改

listen 8080
listen 9090
<directory /www>
#访问权限
allowoverride none
require all granted
</directory>
<virtualhost 192.168.71.129:80>
#虚拟主机的配置
#主机通过这个IP地址访问
servername 192.168.71.129
documentroot /var/www/129
#游览器访问的文件路径
</virtualhost>
<virtualhost 192.168.71.130:8080>
#虚拟主机的配置
#主机通过这个IP地址访问
servername 192.168.71.130
documentroot /var/www/8080
#游览器访问的文件路径
</virtualhost>
<virtualhost 192.168.71.130:9090>
#虚拟主机的配置
#主机通过这个IP地址访问
servername 192.168.71.130
documentroot /var/www/9090
#游览器访问的文件路径
</virtualhost>

然后自定义测试页面

[root@192 www]# mkdir -pv 9090
mkdir: 已创建目录 '9090'
[root@192 www]# mkdir -pv 8080
mkdir: 已创建目录 '8080'
[root@192 www]# echo welcome to 8080 > 8080/index.html
[root@192 www]# echo welcome to 9090 > 9090/index.html

查看监听端口

[root@192 redhat]# netstat -lntop | grep httpd

同时在防火墙中添加端口

[root@192 8080]# firewall-cmd --permanent --add-port=8080/tcp
success
[root@192 8080]# firewall-cmd --reload
success
[root@192 8080]#

游览器测试

    • 基于主机名的多虚拟主机

用户通过主机名访问服务器时,中间油dns服务解析进行转发,dns将主机名转化为对应的IP地址,通过报文发给用户,用户通过IP访问服务器。

解析:1, 本地解析(本地解析文件里没有则解析DNS解析) 2,DNS服务解析

本地解析文件,

/etc//hosts

在以前的基础上配置httpd子配置文件

<virtualhost 192.168.71.130:80>
#虚拟主机的配置
#主机通过这个IP地址访问
servername www.yiyi.com
documentroot /var/www/yiyi
#游览器访问的文件路径
</virtualhost>
<virtualhost 192.168.71.130:8080>
#虚拟主机的配置
#主机通过这个IP地址访问
servername www/yaya.com
documentroot /var/www/yaya
#游览器访问的文件路径
</virtualhost>

添加本地解析

配置完成

若想要在Windows上访问,也需要更改Windows的本地解析文件。

C:\Windows\System32\drivers\etc

使用notepad++ 以管理员身份保存

    • 基于用户认证的虚拟主机

指定一个特殊的页面,当用户访问时需要输入账号和密码。

861 htpasswd -c /etc/httpd/number abc
#创建账号,密码文件
862 htpasswd /etc/httpd/number jack
863 cat /etc/httpd/number

864 mkdir /usr/local/mysecret/
#创建一个需要用户验证的目录
865 echo my secret is ---- > /usr/local/mysecret/index.html
#创建页面下的内容

虚拟服务器的配置


<directory /usr/local/mysecret>
#认证类型,基本类型,账号+密码
authtype basic
#提示的内容
authname "This is a private directory,Please Login: "
#对哪一个文件进行验证
authuserfile /etc/httpd/number
#需要的用户
require user abc jack
</directory>
<virtualhost 192.168.71.130:8080>
servername www.yiyi.com
#路径别名
alias /mysecret /usr/local/mysecret
documentroot /var/www/8080
</virtualhost>

重启服务

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

登录www.yiyi.com/mysecret加密页面

  • 基于python 的动态虚拟主机

  • 基于https协议的加密虚拟主机

客户端与服务器之间传输的数据加密传输

安装支持https的软件包

    • 问题

1.httpd服务重启失败

原因是在修改在配置文件出现语法错误

  1. 关机之后重启httpd服务失败

[root@192 conf]# systemctl start httpd
Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xeu httpd.service" for details.
1月 17 10:57:45 192.168.71.129 httpd[2033]: (13)Permission denied: AH00072: make_sock: could not bind to address [::]:9090
1月 17 10:57:45 192.168.71.129 httpd[2033]: (13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:9090

原因---可能是本机这个端口已经被占用,是SELINUX 没关,一开机,SELINUX默认是开启的时候,默认会给所有的软件上锁,不能进行更改。

SELinux开关及模式
enforcing:强制模式,表示SELinux运行中,且正在限制domain/type
permissive:宽容模式,表示SELinux运行中,但仅有警告信息并未限制domain/type,多用于debug
disabled:关闭
命令 getenforce 可获取SELinux的模式,上面安装完后,默认为disabled
命令 setenforce设置SELinux模式,0为permissive,1为enforcing,但实际上只能在开机状态下切换enforcing和permissive,而不能从disabled直接切换为enforcing或permissive,反之也不行

vim /etc/selinux/config

把这个改为disabled

执行这个 setenforce 0

防火墙启动失败-

firewalld.service: start operation timed out. Terminating.
[root@192 selinux]# systemctl status firewalld.service
× firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: failed (Result: timeout) since Tue 2023-01-17 11:37:51 CST; 8min ago
Duration: 24min 38.445s
Docs: man:firewalld(1)
Process: 2610 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 2610 (code=exited, status=0/SUCCESS)
CPU: 514ms
1月 17 11:36:20 192.168.71.129 systemd[1]: Starting firewalld - dynamic firewall daemon...
1月 17 11:37:51 192.168.71.129 systemd[1]: firewalld.service: start operation timed out. Terminating.
1月 17 11:37:51 192.168.71.129 systemd[1]: firewalld.service: Failed with result 'timeout'.
1月 17 11:37:51 192.168.71.129 systemd[1]: Failed to start firewalld - dynamic firewall daemon.
pkill -f firewalld

启动成功

猜你喜欢

转载自blog.csdn.net/m0_59081230/article/details/128696289