当前位置:首页 » 操作系统 » linuxvhost

linuxvhost

发布时间: 2022-08-06 02:38:39

linux apache是否有正向代理

1. 正向代理
配置正向代理很简单,此处我们配置vhost来实现代理, 只需要在浏览器的Proxy选项里加入你的Apache配置的vHost主机即可

1.1 开启Apache代理模块并引入vhost配置文件
早http.conf开启代理模块
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so

引入vhost文件
Include conf/extra/httpd-vhosts.conf

如果你想监听别的端口, 修改Listen参数
Listen 80
Listen 8087
Listen 8088

将想监听的端口全都写上,相应的, 在vhost文件里写上
NameVirtualHost *:80
NameVirtualHost *:8087
NameVirtualHost *:8088

NameVirtualHost表示vhost匹配的请求的ip和端口那些会取扫描vhost
1.1 Apache配置 httpd-vhosts.conf(以Windows下为例)

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/www/test"
ServerName www.test.com
ServerAlias test.com
ErrorLog "logs/test.com-error.log"
CustomLog "logs/test.com-access.log" common
Alias /sublook "D:/www/test/look/sublook/"
<Directory "D:/www/test">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

#正向代理设置
ProxyRequests On
ProxyVia On

<Proxy *>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Proxy>
</VirtualHost>

先看
<VirtualHost *:80>

VirtualHost 后面的参数表示的是该VHost的IP/域名/和端口, 你可以写 :
(1) IP: port, 例如 <VirtualHost 175.2.22.65:8088>, 访问的时候通过IP访问
(2) Domain, 例如 <VirtualHost www.test1.com>, 访问的时候通过域名访问, 也可以指定里面的ServerName来指定域名
(3) *, 表示匹配所有对Apache监听主机的请求, 只要是apache监听到的请求都可以匹配该虚拟主机
此处表示的就是监听所有80端口的请求, 但是由于ServerName里写了www.test.com, 所以这个vhost匹配的是www.test.com:80,

现在看正向代理设置那一段
ProxyRequests On:开启Apache正向代理
ProxyVia On:控制位于代理服务器链中的代理请求的流向
引用Apache2.2官方文档中对ProxyVia的解释如下:

如果设置为默认值Off ,将不会采取特殊的处理。如果一个请求或应答包含"Via:"头,将不进行任何修改而直接通过。
如果设置为On每个请求和应答都会对应当前主机得到一个"Via:"头。
如果设置为Full ,每个产生的"Via:"头中都会额外加入Apache服务器的版本,以"Via:"注释域出现。
如果设置为Block ,每个代理请求中的所有"Via:"头行都将被删除。且不会产生新的"Via:"头。
<Proxy *>...</Proxy>:用来控制谁可以访问你的代理
1 <Proxy *>
2 Order deny,allow
3 Deny from all
4 Allow from 127.0.0.1
5 </Proxy>

此处设置为本机可以使用代理,真正使用的时候就自己设置了

⑵ 在Linux下怎么实现多个域名共用一个Ip

1、这个问题和linux系统没关系
2、用webserver的虚拟主机vhost
3、apache实例
<VirtualHost 172.16.1.2>
DocumentRoot /opt/www1
ServerName dns1
.......
</VirtualHost>
<VirtualHost 172.16.1.2>
DocumentRoot /opt/www2
ServerName dns2
.......
</VirtualHost>
4、nginx实例
server{
listen 80;
server_name yourdomain1; #绑定域名
index index.html; #默认文件
root /opt/www; #网站根目录
include proxy.conf; #调用其他规则
}
server{
listen 80;
server_name yourdomain2; #绑定域名
index index.html; #默认文件
root /opt/www; #网站根目录
include proxy.conf; #调用其他规则
}

⑶ vhost虚拟主机系统是用来做功什么的

是一套虚拟主机管理系统,免费的系统,听说很不错,不过好像是LINUX下的,不过我没用过!不知道具体功能怎么样。

说白了就是配合你服务器来做虚拟主机自动管理的产品。做虚拟追究应用很不错!

⑷ linux下如何用apache配置两个虚拟主机

可以使用基于IP地址的虚拟主机,也可以使用基于主机名的虚拟主机,建议使用后者。需要先配置DNS服务,使得能够解析两个名字,并且为两个网站分别建立目录。
下面是httpd.conf配置文件的例子:

nameVirtualHost 192.168.0.2

<VirtualHost 192.168.0.2>
DocumentRoot /var/www/site1
ServerName vhost1.yang.com
CustomLog logs/vhost1-access_log common
</VirtualHost>

<VirtualHost 192.168.0.2>
DocumentRoot /var/www/site2
ServerName vhost2.yang.com
CustomLog logs/vhost2-access_log common
</VirtualHost>

⑸ 为什么linux系统安装virtualbox后不能创建仅主机网络

VirtualBox的提供了四种网络接入模式,它们分别是:
1、NAT 网络地址转换模式(NAT,Network Address Translation)
2、Bridged Adapter 桥接模式
3、Internal 内部网络模式
4、Host-only Adapter 主机模式

第一种 NAT模式
解释:
NAT模式是最简单的实现虚拟机上网的方式,你可以这样理解:Vhost访问网络的所有数据都是由主机提供的,vhost并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Vhost的存在。
虚拟机与主机关系:
只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
虚拟机与网络中其他主机的关系:
只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
虚拟机与虚拟机之间的关系:
相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。
IP:10.0.2.15
网关:10.0.2.2
DNS:10.0.2.3
一台虚拟机的多个网卡可以被设定使用 NAT, 第一个网卡连接了到专用网 10.0.2.0,第二个网卡连接到专用网络
10.0.3.0,等等。默认得到的客户端ip(IP
Address)是10.0.2.15,网关(Gateway)是10.0.2.2,域名服务器(DNS)是10.0.2.3,可以手动参考这个进行修
改。
NAT方案优缺点:
笔记本已插网线时: 虚拟机可以访问主机,虚拟机可以访问互联网,在做了端口映射后(最后有说明),主机可以访问虚拟机上的服务(如数据库)。
笔记本没插网线时: 主机的“本地连接”有红叉的,虚拟机可以访问主机,虚拟机不可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。

第二种 Bridged Adapter模式
解释:
网桥模式是我最喜欢的用的一种模式,同时,模拟度也是相当完美。你可以这样理解,它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。
虚拟机与主机关系:
可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机于网络中其他主机关系:
可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机于虚拟机关系:
可以相互访问,原因同上。
IP:一般是DHCP分配的,与主机的“本地连接”的IP 是同一网段的。虚拟机就能与主机互相通信。
笔记本已插网线时:(若网络中有DHCP服务器)主机与虚拟机会通过DHCP分别得到一个IP,这两个IP在同一网段。 主机与虚拟机可以ping通,虚拟机可以上互联网。
笔记本没插网线时:主机与虚拟机不能通信。主机的“本地连接”有红叉,就不能手工指定IP。虚拟机也不能通过DHCP得到IP地址,手工指定IP后,也无法与主机通信,因为主机无IP。
这时主机的VirtualBox Host-Only Network 网卡是有ip的,192.168.56.1。虚拟机就算手工指定了IP 192.168.56.*,也ping不能主机。

第三种 Internal模式
解释:
内网模式,顾名思义就是内部网络模式,虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。
虚拟机与主机关系:
不能相互访问,彼此不属于同一个网络,无法相互访问。
虚拟机与网络中其他主机关系:
不能相互访问,理由同上。
虚拟机与虚拟机关系:
可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。如上配置图中,名称为intnet。
IP: VirtualBox的DHCP服务器会为它分配IP ,一般得到的是192.168.56.101,因为是从101起分的,也可手工指定192.168.56.*。
笔记本已插网线时:虚拟机可以与主机的VirtualBox Host-Only Network 网卡通信
这种方案不受主机本地连接(网卡)是否有红叉的影响。

第四种 Host-only Adapter模式
解释:
主机模式,这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。
我们可以理解为Vbox在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。
虚拟机与主机关系
默认不能相互访问,双方不属于同一IP段,host-only网卡默认IP段为192.168.56.X 子网掩码为255.255.255.0,后面的虚拟机被分配到的也都是这个网段。通过网卡共享、网卡桥接等,可以实现虚拟机于主机相互访问。
虚拟机与网络主机关系
默认不能相互访问,原因同上,通过设置,可以实现相互访问。
虚拟机与虚拟机关系
默认可以相互访问,都是同处于一个网段。
虚拟机访问主机 用的是主机的VirtualBox Host-Only Network网卡的IP:192.168.56.1 ,不管主机“本地连接”有无红叉,永远通。
主机访问虚拟机,用是的虚拟机的网卡3的IP: 192.168.56.101 ,不管主机“本地连接”有无红叉,永远通。
虚拟机访问互联网,用的是自己的网卡2, 这时主机要能通过“本地连接”有线上网,(无线网卡不行)

通过对以上几种网络模式的了解,我们就可以灵活运用,模拟组建出我们所想要的任何一种网络环境了。
比如我想模拟出来一个一台主机,监控一个局域网上网情况的网络环境。
首先我开启了两台虚拟机vhost1与vhost2,当然如果硬件允许,我同样可以再增加vhost3、vhost4…
所有的vhost我都设置成internat内网模式,网络名称为intnal,网关为192.168.56.100,意思就是通过
192.168.56.100网卡上网。其中有一台vhost1我设置为双网卡,一张为内网模式(192.168.56.100),一张为网桥模式
(192.168.1.101)。两张网卡设置双网卡共享上网
虚拟机之间为局域网,其中有一台虚拟机vhost1通过与外网相连,所有局域网中的虚拟机又通过vhost1来实现上外网。这样vhost1就可以监控整个虚拟机局域网上网情况了。

NAT 设置端口映射
http://huzhangsheng.blog.163.com/blog/static/34787784200802801435931/
你可以设置一个虚拟机的服务(比如 WEB 服务),通过使用命令行工具 VboxManage
代理。你需要知道虚拟机的服务使用哪个端口,然后决定在主机上使用哪个端口(通常但不总是想要使虚拟机和主机使用同一个端口)。在主机上提供一个服务需要
使用一个端口,你能使用在主机上没有准备用来提供服务的任何端口。一个怎样设置新的 NAT 例子,在虚拟机上连接到一个 ssh
服务器,需要下面的三个命令:
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol' TCP
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort' 22
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort' 2222
说明:VboxManage 是一个命令行程序,请查询你的 VirtualBox 安装目录,'Linux Guest'
是虚拟主机名。guestssh 是一个自定义的名称,你可以任意设置,通过上面的三个命令,把虚拟机的 22 端口 转发到主机的 2222 端口。
又比如,我在虚拟机 debian 上安装了 apache2 服务器,使用 80 端口,映射到主机的 80 端口。使用下面的命令。
'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata
'debian'
'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/Protocol' TCP
'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata
'debian'
'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/GuestPort' 80
'C:\Program Files\innotek VirtualBox\VBoxManage.exe' setextradata
'debian'
'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/HostPort' 80
注意:要使设置生效,请关掉 VirtualBox 再运行虚拟机,我把 VirtualBox 安装在 winxp 上,在虚拟机中安装
debian 4.02r ,虚拟机名是 debian ,并安装了 apache2 php5 mysql-server ,在主机上用IE浏览
http://localhost,成功转发到虚拟机 debian 的 apache2 web 服务器上

上文出处:http://www.cnblogs.com/coltiam/archive/2010/03/26/1696939.html

个人感觉通过使用端口映射的方式很不爽,还不如直接桥接来的快,现在多数情况下连接到网络是没问题的,端口映射还需要在宿主跟虚拟机都额外开某个服务,感觉不爽。

“网络”配置页面有4个方案:

1:NAT 网络地址转换(Network Address Translation)

2:Birdged Network 桥接

3:Internal Network 内部网络(可以是虚拟机与虚拟机之间)

4:Host-Only 只与主机通信(大概吧)

安装完VirtualBox2.2后,主机多了一个“VirtualBox Host-Only Network ”本地网卡。

附上出处链接:https://www.douban.com/group/topic/15558388/

⑹ 请教几个LNMP中的vhost的问题

谢谢老大。。。这里所谓的虚拟主机。。。是否可以理解为Win系统下IIS中建立的不同的那些站点?抱歉。。。Linux新手,只能用Win系统中的概念来理解。。。。那么这vhost的nginx和主站点的nginx之间不会互相影响到吧?在Win系统的IIS中,不同的站点可以跑在不同的应用程序池中的来隔离不同的站点。。。嗯哪,例如一个vhost的站点挂掉了,影响主站点或者其他的vhost。以及通过这个vhost的session或者啥技术手段探测/接触/影响到其他vhost和主站点。

⑺ 求Linux虚拟主机配置!

www服务的虚拟主机?
有基于主机头的配置
ip相同端口不同的配置
你说的哪个?
虚拟主机配置默认在/etc/httpd/vhostconf.d/namevhost.conf
假设本机dns 192.168.1.2 ip 192.168.1.2 解析地址为www.123.com
servername 192.168.1.2
namevirtualhost 192.168.1.2
<virtualhost 192.168.1.2:80>
servername www.123.com
documentroot 网站文件地址
剩下不用改

⑻ linux vps 安装主机管理软件

linux我也不太懂,不过这里可以给比几个参考资料http://www.volit.com/vps/help/linux.php1 用户在火山互联网站LinuxServer VPS获得成功后,会显示出相应的VPS服务信息。
如:虚拟机名称:vmlinux20101,公网IP:123.59.84.66,内网IP:10.2.1.101,
SSH远程端口:20101;远程帐号:root;远程口令:volit_abcd1234,ftp端口:10101;ftp帐号:myftp;ftp口令:volit1999;mysql帐号:root;mysql口令:volit1999。

2:远程登录Linuxserver虚拟机,用户本地需要安装SSH客户端(windows平台:SecureCRT、putty等工具)。
在建立连接窗口中填入相应设置,远程计算机:123.59.84.66;远程端口:20101,建立连接成功后会提示输入相应的帐户和密码,输入后台显示的账号及密码即可登录。

3:考虑到网络安全,我司将远程口令是设为随机,用户登录后可自行修改密码,而MYSQL服务的管理密码是固定的,请用户务必更改以保证安全。

4:火山互联的所有VPS都已经配置好并运行了网站 、FTP服务。用户可根据自行的情况进行更改。

a:apache服务,安装路径在 /usr/local/apache2/,网站数据路径在/data/web/,apache配置文件是/usr/local/apache2/conf/httpd.conf,php配置文件是/etc/php.ini,
用户可编辑 /usr/local/apache2/conf/httpd.conf 或 /usr/local/apache2/conf/vhost.conf 添加更改虚拟主机。
配置文件里有模板www.vhost.cn(网站路径/data/web/www/)与my.mysql.cn(网站路径/data/web/mysqladmin,使用phpmyadmin管理MYSQL数据库)。
启动关闭apache服务命令:/etc/init.d/httpd -k start|stop|restart

b:Pure-Ftpd服务,安装路径在 /usr/local/pureftpd/,配置文件是 /usr/local/pureftpd/etc/pure-ftpd.conf,Pure-Ftp使用mysql配置帐户的文件是/usr/local/pureftpd/etc/pureftpd-mysql.conf。
Pure-Ftpd在mysql数据库中的默认帐号是: pureftpd;默认密码:volit1999;默认库:pureftpd;默认表:users。
新增FTP帐户:可使用用本机mysql客户端 /usr/local/mysql/bin/mysql -uroot -pvolit1999 插入帐户信息至pureftpd.users表,或者使用phpmyadmin对pureftpd.users表进行添加删除FTP帐户。
pureftpd.users表特别字段说明:User:帐户名;Password:帐户密码;Dir:用户主目录路径。

c:MYSQL数据库服务,安装路径在 /usr/local/mysql/,数据目录在:/data/mysql/,配置文件是 /etc/my.cnf,启动与关闭服务命令:/etc/init.d/mysqld start|stop|restart,其它客户端与工具命令路径:/usr/local/mysql/bin/。
请务必更改密码保证安全,/usr/local/mysql/bin/mysqladmin password [yourpassword] --password=volit1999,登录命令:/usr/local/mysql/bin/mysql --user=root --password=[yourpassword]。
可使用apache整合的phpmyadmin对MYSQL数据库进行方便管理。

5:服务:a:网站服务,登录火山互联网站并点击“产品管理” 板块里的“VPS租用管理” ,选择已订购的VPS产品,增加已转向至公网IP的域名,并设置好apache虚拟主机,即可进行访问。
b:FTP服务,打开浏览器,输入:ftp://myftp:[email protected]:10101 就可以访问自己的/data/web/目录了。

6. 重要说明:由于免费VPS使用共享IP,所有网站访问(80端口的服务)都通过代理转发到真实VPS中,因此所有网站服务必须在我司会员中心VPS管理中的使用“域名绑定”功能添加VPS中的网站域名后才能正常访问。

比如在VPS中开设了test.volit.com网站,在把域名指向VPS的公网IP后,网站将不能正常访问。只有在设置“域名绑定”之后,方可正常访问。

“域名绑定”流程:登录会员中心 -> 进入“VPS管理” -> 显示所购买或申请到的VPS产品,点击产品名称或后面的“管理”链接 -> 进入管理页面,在下面“域名绑定”的输入框中输入域名,提交后即可。

服务器上已经设置了一些默认端口:3389(Windows远程连接),22(Linux远程连接),21(FTP连接),这些端口请不要改变或禁用,以免影响管理。

注:以上涉及的服务均应根据您实际获得的IP、端口与帐号进行设置。

⑼ linux服务器怎样绑定域名

一、DNS服务器的设置

我们知道互联网网是基于TCP/IP协议的,要进行通信必须获得对方的IP地址,这是通过DNS服务器来实现的。因此要想实现虚拟域名首先应当令DNS服务器接受该虚拟域名,即把它映射到指定的IP地址上。因为我们靠Web服务器来区分域名,所以这个IP地址自然应当是Web服务器所管理的。

RedHat6.0操作系统中捆绑有BIND DNS服务器。它的域名配置文件是”/etc/named.conf”,一般情况下,域配置文件放在”/var/named”目录下面。

例1、named.conf文件的配置:

zone “domain.com” {
type master;
file “domain.com”;
};
zone “0.10.10.in-addr.arpa” {
type master;
file “10.10.0〃;
};

该例子说明”domain.com”的域配置文件是”/var/named/domain.com”,反向域的配置文件是”/var/named/10.10.0〃。domain.com文件负责把DNS域名映射为IP地址。

例2、domain.com文件配置:

@ IN SOA dns.domain.com. hostmaster.dns.domain.com. (
1998111003 ; serial
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
)
@ IN MX 10 dns.domain.com.
@ IN NS dns.domain.com.
@ IN A 10.10.0.1
www IN A 10.10.0.1

假定要增加的域名是aaa.domain.com,想要指到www.domain.com,DNS服务中应增加一个别名记录,可写成:

aaa IN CNAME www.domain.com.

如果需要配置大量的虚拟域名,domain.com文件要很大,而且也相当麻烦。我们可以使用符号 “*” ,即在 domain.com 文件中加入:

* IN CNAME www.domain.com.

这样它就把所有没给出设置的以domain.com结尾的记录全部转到www.domain.com去了,不管是aaa.domain.com还是bbb.domain.com。这不会影响已有的记录。配置好DNS服务器后应该重新启动守护进程named:

[root@domain /root]# /etc/rc.d/init.d/named restart
二、Apache服务器的配置

Apache服务器是目前互联网上使用最多的Web服务器,它可以维护非常繁忙的站点。RedHat 6.0捆绑了Apache Web Server 1.3。它的配置文件位于”/etc/httpd/conf”目录下,有httpd.conf、srm.conf、access.conf,下面讨论一下与虚拟域名有关的配置:

1、静态配置

修改配置文件 httpd.conf 的步骤:

(1) 首先设置UseCanonicalName为off。它指示用服务器Host:header的内容代替ServerName 的值来提供给环境变量SERVER_NAME。

(2) 然后加入:

NameVirtualHost xxx.xxx.xxx.xxx其中xxx.xxx.xxx.xxx为所要配置的虚拟服务器的IP地址。在此可配置多个虚拟IP地址,当然要与DNS服务器中的配置一致。(注意:这里要用IP地址,不能用域名。)

(3) 接下来为每个虚拟域名加入一段记录:

< virtualhost xxx.xxx.xxx.xxx>
…..
< /virtualhost>

xxx.xxx.xxx.xxx要和NameVirtualHost配置的IP地址一致。在两个标志之间可加入的配置参数有:

ServerName后面跟你要增加的虚拟域名,如aaa.domain.com ;
Documentroot如果你映射到本机的路径就加在后面,如”/home/aaa” ;
redirect如果你映射到远端的URL可加在后面,有两个参数,第一个是虚拟域名的相对路径,第二个是远端站点的URL;
ServerAlias后可加入本域名的别名,可使用通配符,如*.aaa.domain.com 。

下面举两个例子:

例3、映射到本机的物理路径:

< virtualhost xxx.xxx.xxx.xxx>
DocumentRoot “/home/test”
ServerName test.domain.com
< virtualhost>

例4、映射到远端的URL:

< virtualhost xxx.xxx.xxx.xxx>
ServerName test1.doamin.com
redirect / http://test.domain1.com/welcome.htm
< /virtualhost>

还有一些参数,象log文件的位置、超时的设置、缓冲区的设置等等,在此不一一介绍,可以参考Apache服务器的在线帮助文件。配置好httpd.conf文件后需要重新启动Apache的后台守护进程httpd,

[root@domain /root]# /etc/rc.d/init.d/httpd restart

每增加一个虚拟域名就要增加一段位于 < VirtualHost...>…< /VirtualHost> 之间的配置代码,而且只有在重新启动 httpd 后新配置才能生效。

2、动态配置

可以发现,如果要配置大量的虚拟域名将大大增加配置文件的长度,这样还会使Apache启动变慢,占用更多的内存,而且也不容易实现在线申请。可以通过选择动态方式来配置。这样不必事先写好配置,而是通过编写一定的动态规则来自动生成或随时从独立的配置文件中读取信息。

Apache有一个强大的扩展功能,即模块(Moles)的特性。模块可对服务器的功能进行扩充,它在运行和使用时才装入服务器,这样比一直放入服务器中要节省内存空间,同时也比调用外部CGI程序速度快。

现在使用一个功能强大的模块来实现动态配置虚拟域名,这就是mod_rewrite。它负责侦听从客户机送出的URL地址,并基于一组规则表达式对该URL来进行重写。这类似于URL别名概念,但它更进了一步,输出的URL可以映射到其他主机的任何URL地址上。 修改配置文件httpd.conf的步骤:

(1) 先设置UseCanonicalName为off 。

(2) 使用RewriteEngine on打开rewrite引擎。用RewriteMap设定配置文件的位置和属性,用RewriteCond和RewriteRule制定相应的规则。

例5、httpd.conf 文件中相关配置的一个例子:

RewriteEngine on
RewriteMap lowercase int:tolower
# 定义独立的配置文件的位置
RewriteMap vhost dbm:/www/conf/vhostdbm
# 利用独立的配置文件重映射虚拟域名
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1

RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1

这里的 vhostdbm 文件格式见”CGI 程序的编制” 。
三、CGI程序的编制

要实现虚拟域名的在线申请,就必须编写相应CGI程序动态修改独立的配置文件(即上面的vhostdbm文件)和进行用户的管理(包括用户申请,登录,密码修改等等)。在此只介绍对独立的配置文件的操作,其他属于如何用Perl语言来编写CGI程序,请参考有关资料。

vhostdbm文件使用dbm格式来记录数据,与用普通文本文件相比可加快寻找速度,而且易于修改。许多UNIX系统都具有叫做dbm(database management)的标准库。该库将键-值对的集合存贮到一对磁盘文件中,提供简单的数据库管理工具,可以方便的更改、新增或删除数据内容。

Perl访问dbm的方式:通过一个类似于打开文件的进程将关联数组与dbm数据库联系起来。在数组中创建新元素时立即就更改了dbm数据库。删除一个元素的同时也删除了dbm数据库中的数值。可使用:

1、欲将dbm数据库与dbm数组相关联起来:

dbmopen(%arrayname,”dbmfilename”,$mode);

如果dbmfilename不存在的话就新建该库。%arrayname参数是Perl的关联数组(如果这个数组已经有值,那么这些值就被删除)。该关联数组连接到叫做dbmfilename的dbm数据库中。$mode 参数是当需要创建库时控制库文件权限的数字,该数字被指定为8制,经常被用到的是0644,给除了机主之外的新用户以只读的权限,机主可有全部权限。

2、关闭dbm库:

dbmclose(%arrayname);
%arrayname 是已经与dbm库关联了的数组名。

例6、VHOST打开vhostdbm,或新建一个dbm库:

dbmopen(%VHOST,”vhostdbm”,0644);

例7、新建记录或更改已有记录(设从html文件form中传过来的参数名为vhost、rhost):
$VHOST{$FORM{’vhost’}}=$FORM{’rhost’};

例8、删除已有记录(设从html文件form中传过来的参数名为vhost):
delete $VHOST{$FORM{’vhost’}};

例9、关闭vhostdbm:

dbmclose(%VHOST);

注:以上已经假设传过来的参数经过了验证,不存在重复的记录,否则会导致已有记录的混乱。

httpd.conf 该文件底部

< virtualhost 192.168.0.100> #你的服务器ip
DocumentRoot “/home/test” #你的网站路径
ServerName test.domain.com #你的域名
< virtualhost>

⑽ LINUX操作系统课程设计:企业服务器的配置与实现怎样做

一般购买大品牌的服务器才有相应的驱动程序:
硬件:4核CPU,4G的内存,主板带RIAD,512G内存,

安装与配置Web服务器
Apache服务器源代码安装:
http://httpd.apache.org
Apache RPM软件下载:
http://updates.redhat.com
Apache模块和MPM可使用类型的更详细介绍:
http://httpd.apache.org/docs-2.0/mod/N
Apache对模块的使用有两种方法,一种是将其永久性地编译Apache内核中,即采用静态编译;另一种是采取动态编译,将其编译成DSO(Dynamic shared object,动态共享对象)模块,DSO模块的存储是独立于内核的,可被内核在需要时调用,具体是由mod_so模块提供的运行时配置指令(LoadMole)来实现的,若在编译中包含有任何动态模块,则mod_so模块会被自动包含进内核。若仅希望内核能够支持装载DSO模块,但不实际编译任何动态模块,则在编译配置时就明确指定--enable-so配置参数。
还提供了多道处理模块MPMs(multi-processing moles),编译过程中必须包含一个且只能有一个MPM,编译时系统会根据平台类型自动选择使用默认的MPM,也可在configure命令行中配置:
--with-mpm=要使用MPM类型

模块的指定方法:
1.静态编译模块到内核中,如编译包含mod-sll和mod_rewrite(去掉mod_)模块:
./configure --enable-mole="ssl rewrite"或./configure --enable-sll --enable-rewrite
动态编译模块为DSO:
./configure --enable-mods-shared="ssl rewrite"或./configure --enable-rewrite=shared

模块说明:
httpd -l //查看httpd进程中包含哪些模块;
httpd -S //检查虚拟主机的配置是否存在语法错误;
httpd -f //启动httpd守护进程时,加载配置文件;
mod_deflate模块允许支持此功能的浏览器,在请求的页面内容发送前进行压缩,以节少网络带宽。
mod_vbost_alias模块支持虚拟主要的动态配置。

chkconfig --level 235 httpd on
chkconfig --list httpd
service httpd start
service httpd restart
service httpd reload //重新装载httpd.conf(不重启服务器)
./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=prefork --enable-moles="setenvif rewrite deflate vhost_alias"
#apachectl start //启动Apache服务器;
#apachectl restart
#echo "/usr/local/apache2/bin/apachectl start">>/etc/rc.d/rc.local //自动启动
#httpd -t //检查配置文件httpd.conf
#apachect configtest //检查配置文件httpd.conf
#ServerRoot apache安装路径 //设置服务器的根目录;
#ServerName 完整的域名[:端口号] //设置服务器用于重定向(端口)和虚拟主机;
#Listen [IP地址]端口号 //告诉服务器接受来自指定端口或者指定IP地址的某端口的请求;
Listen 80
Listen 61.186.160.104:8088
#ServrAdmin E-mail地址 //设置Web站点管理员的E-mail地址,当产生错误时(如指定的网页找不到),服务器返回给客户端的
错误信息中将包含该邮件地址,以告诉用户该向谁报告错误;
#DocumentRoot 目录路径名 //设置Web服务器站点根目录;
DocumentRoot /usr/local/apache2/htdocs
#ErrorDocument 错误号 所要显示的网页 //定义当遇到错误时,服务器将给客户端什么样的回应,通常是显示预设置的一个错误页面;
grep ErrorDocument /etc/httpd/conf/httpd.conf //httpd.conf中一些对不同错误的响应信息;
#DirectoryIndex index.php index.htm index.html default.htm //设置站点主页文件的搜索顺序;
#user nobody //设置服务器以哪种(nobody)用户身份来响应客户端的请求;
#Group # -1 //设置服务器以哪种(nobody)用户身份来响应客户端的请求;nobody用户权限较小。
#AddDefaultCharset GB2312 //指定默认的字符集;
#TimeOut //设置连接请求超时的时间(秒),超时将断开;
#KeepAlive //用于启用持续的连接或者禁用;KeepAlive On|Off
#MaxKeepAliveRequests //设置在一个持续连接期间允许的最大HTTP请求数目;
#KeepAliveTimeout //设置在关闭TCP连接之前,等待后续请示求的秒数;一旦接受请求建立了TCP连接后则开始计时;
#PidFile logs/httpd.pid //指定存放httpd主(父)进程号的文件名;

日志配置命令:
#ErrorLog //指定服务器存放错误日志文件的位置和文件名;
#LogLevel //设置记录在错误日志中的信息的详细程序;
emerg 紧急,系统将无法使用;
alert 必须立即采取措施;
crit 致命情况;
crror 错误情况;
warm 警告;
info 普通信息;
notice 一般重要情况;
debug 出错级别信息;

http://127.0.0.1 //测试Apache是否正常运行
Test Page
This page is used to test the proper operation of the Apache Web server after it has been installed. If you can read this page, it means that the Apache Web server installed at this site is working properly.

#rpm -q httpd
#rpm -Uvh http-2.0.40-21.11.i386.rpm

目录说明:
/etc/httpd/conf //Apache服务器的配置文件httpd.conf
/etc/rc.d/init.d/ //Apache服务器启动脚本安装,httpd
/var/www/html //Web站点根目录;
/usr/bin //Apache软件包提供的可执行程序安装在该目录下。
/etc/httpd/logs //日志文件
htdocs //默认Web站点的根目录,可通过配置文件httpd.conf进行设置或更改;
cgi-bin //CGI脚本目录;
bin //apachectl启动脚本会自动设置在某些操作系统下,正常运行httpd所需的环境变量;
httpd守扩进程被调用后做的第一件事就是读取httpd.conf,并根据其配置项来配置当前Web服务器;
httpd.conf 分为三部分(section),
第一部分为全局环境设置,主要用于设置ServerRoot、主进程号的保存文件、
对进程的控制、服务器侦听的IP地址、端口、要装载的DSO模块
第二部分是服务器的主要配置指一位置;
第三部分用于设置和创建虚拟主机;
Listen 80 //Web服务器绑定在80端口;
DocumentRoot //设置Web站点的根目录等;
访问控制指令:
<Directory /usr/local/*/htdoes> //<Directory>使指定的目录及其子目录有效;不可嵌套。目录名可使用“*”或“?”通配符,
<Files ~“\.ht"> //作用于指定的文件,则不管该文件实际存在子哪个目录,允许所有主机访问位于任何目录下的.ht开的文件
Order allow,deny //指定allow和deny语句,哪一个被执行;允许、禁止访问主机。
Allow from all //允许所有主机访问;也可以是IP地址。
<Files>
</Directory>

<Location /assistant> //针对URL地址进行访问限制,不是文件系统;
Order deny,allow //
Deny from all
Allow from 61.186.160.105
</Location>

Order deny,allow //若主机没有被特别指出拒绝访问,则该资源被允许访问。
Order allow,deny //若主机没有被特别指出允许访问,则该主要将被拒绝访问该资源。
Order mntual-failure //只有那些在allow语句中被指定,同时又没有出现在deny语句的主机,才允许访问。若主机在两条指
令中都没有出现,则将被拒绝访问;
*、? //*代表任意个字符,?代表一个任意的字符;
<DirectoryMatch> //指定目录名时,可直接使用正则表达式;<Directory>若要使用正则表达式,则需要在正则表达式前加“~"
<FilesMatch> //可直接使用正则表达式来通配多个文件;

AccessFileName .htaccess //.htaccess分布式配置文件,在该文件中也可放置一些配置指令,以作用于该文件所在的目录以及
其下的所有子目录。搜寻.htaccess文件会降低系统性能;
<Directory />
AllowOverride None //禁止系统查找.htaccess文件;
Options FollowSymLinks //Options:控制在特定目录中将使用哪些服务器特性;
</Directory>

Options命令可用的选项:
None 不启用任何额处特性;
All 除MultiViews之外的所有特性,默认设置;
ExecCGI 允许执行CGI脚本;
FollowSymLinks 服务器允许在此目录中使用符号连接。在<Location>段中无效
Includes 允许服务器端包含SSI(Server-side includes)
IncludesN()EXEC 允许服务器端包含,但禁用#exec和#exec CGI命令。但仍可以从ScriptAltase目录使用#include虚拟CGI脚本;
Indexes 如果一个映射目录的URL被请求,而此目录中又没有DirectoryIndex(如:index.html),那么服务器返回一个
格式化后的目录列表;
MultiViews 允许内容协商的多重视图;
SymLinksIfOwnerMatch 服务器仅在符号连接与其目的目录或文件拥有者具有同样的用户ID时,才使用它;
ExecCGI 拥有ExecCGI执行权限;

prefork.c 控制Apache进程,对于使用prefork多道处理模块的Apache服务器;
<IfMole prefork.c>
StartServers 5 //设置服务器启动时启动的子进程的个数;
MinSpareServers 5 //设置服务器中空闲子进程(即没有HTTP处理请求的子进程)数目的下限;
MaxSpareServers 10 //设置服务器中空闲子进程数目的上限。若空闲子进程超过该设置值,则父进程就会
停止多余的子进程;
MaxClients 150 //设置服务器允许连接的最大客户数;
MaxRequestsPerChild 0 //设置子进程所能处理请求的数目上限,0为不受限制;
</IfMole>
access_log //日志文件用于记录服务器处理的所有请求;
CustomLog 指定access_log日志文件的位置和日志记录的格式;
LogFormat 定义日志的记录格式;
LogFormat 日志格式字符串 日志格式名称
LogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined;
LogFormat "%h %1 %u %t \"%r\" %>s %b" common;
LogFormat "%{Referer}i->%U" referer;
LogFormat "%{User-agent}i“ agent;
LogFormat logs/access_log common

LogFormat "%v %h %l %u %t \"%r"\ %>s %b" vhost
CustomLog logs/vhost_log vhost

%a 远程主机IP地址
%A 本地主机IP地址
%h 远程主机名
%H 请求协议
%l 远程登录名
%u 来自auth 的远程用户
%U 请求的URL路径
%U{User-agent}i 用户浏览器类型
%b 发送的字节数,不包括HTTP标题
%t 请求的时间
%r HTTP请求的第一行的内容
%s HTTP响应状态码,200代表访问成功,404代表文件未找到,403代表禁止访问,401代表未授权访问,400代表错误请求。
%m 请求方法
%v 服务于该请求的服务器的ServerName
%V 服务器的名字,取决于UseCanonicalName的设置
%{Host}i 返回HTTP请求的主机头信息,可能含端口号信息
split-logfile </var/www/myweb/vhost_log //当所有虚拟机日志都记录在主站点日志中时,使用此命令将日志按虚拟主机名分组,拆分成一个个独立的日
志文件,第个日志文件采用"虚拟主机名.log“形式命名,其中包含了该虚拟主机所产生的日志记录;

容器与访问控制指令:容器指令通常用于封装一组指令,使其在容器条件成立时有效,或者用于改变指令的作用域。
<IfMoe ! mpm_winnt.c> //<IfMoe>用于判断指定的模块是否存在,若存在(被静态地编译进服务器,或是被动态装载进服务器)则包含于
其中的指令将有效,否则会被忽略。可嵌套使用。
<IfMoe ! mpm_netware.c> //若要使模块不存在时所包含的指令有效,只需在模块名前加一个“!”即可,
User nobody
Group # -1
</IfMoe>
</IfMoe>

基于域名虚拟主机:
例:假设当前服务器的IP地址为192.168.3.120,现要在该服务器创建两个基于域名的虚拟主机,使用端口为标准的80,其域名分别为www.myweb1.com和www.myweb2.com,站点根目录分别为/var/www/myweb1和/var/www/myweb2,日志文件分别放在/var/vhlogs/myweb1和/var/vhlogs/myweb2目录下面,Apache服务器原来的主站点采用域名www.myweb.com进行访问。
#vi /etc/hosts //使用/etc/hosts进行域名注册;
192.168.3.120 www.myweb1.com www.myweb2.com www.myweb.com

#ping www.myweb1.com //检测域名解析是否正常;
#ping www.myweb2.com
#ping www.myweb.com

#mkdir -p /var/www/myweb1
#mkdir -p /var/www/myweb2
#mkdir -p /var/vhlogs/myweb1
#mkdir -p /var/vhlogs/myweb2

#vi /etc/httpd/conf/httpd.conf
Listen 80 //设置Listen指令侦听的端口
NameVirtualHost 192.168.3.120 //基于域名的虚拟主机,如果对多个地址使用了多个基于域名的虚拟主机
则对每个地址均要使用此指令:NameVirtualHost IP地址:端口
NameVirtualHost * 当IP地址无法确定时,使用“*”通配任意的IP地址
<VirtualHost 192.168.3.120> //定义一个虚拟主机,VirtualHost的参数必须与NameVirtualHost后面所使用的参数保持一致。
ServerName www.myweb.com //当一个请求到时,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果匹配,就会
DocumentRoot /usr/local/apache/htdoes //就会查找每个与这个IP地址相对应的<VirtualHost>配置段,并尝试找出一个ServerName或ServerAlias配置相
ServerAdmin [email protected] //与请求的主机名(域名)相同的,若找到,则使用该虚拟主机的配置,并响应其访问请求。否则将使用符合这个
</VirtualHost> //IP地址的第一个列出的虚拟主机。在最前面的虚拟主机成为默认虚拟主机。
<VirtualHost 192.168.3.120>
ServerName www.myweb1.com
DocumentRoot /var/www/myweb1
DirectoryIndex index.php index.php3 index.html index.htm default.html default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb/error_log
TransferLog /var/vhlogs/myweb1/access_log
</VirtualHost>
<VritualHost 192.168.3.200>
ServerName www.myweb2.com
DocumenRoot /var/www/myweb2
DirectoryIndex index.php index.php3 index.htm index.html default.htm default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb2/error_log
TranferLog /var/vhlogs/myweb2/access_log
</VirtualHost>

<Directory /var/www> //对Web站点目录设置访问控制;
Options FllowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

Apachectl –S //查查虚拟主机配置是否正确;
Aparhectl restart //重启Apache服务器配置生效;

例:
NameVirtualHost 192.168.168.10 //服务器配有两块网卡,IP:内网192.168.168.10,外网61.186.160.104,在Internet网中,企业域名
NameVirtualHost 61.186.160.104 //www.example.com指向外网IP地址,在企业内网的DNS服务器中,指向内网IP地址;现要求为来自内网
<VirtualHost 192.168.168.10 61.186.160.104> //外网的请求提供同样的Web服务。(httpd.conf中设置)
DocumentRoot /www/server1
ServerName www.example.com
</Virtual>

例:
Listen 80 //服务器:192.168.168.154,服务器上创建两个基于域名(主机名)的虚拟主机,域名:www.myweb3.com和www.
Listen 8080 //myweb4.com,每个虚拟主机的80端口和8080端口,分别服务一个Web站点,其站点根目录分别为
// /var/www/myweb3-80、/var/www/myweb3-8080、/var/www/myweb4-80、/var/www/myweb4-8080。
NameVirtualHost 192.168.168.154:80 //www.myweb3.com的80端口作为默认Web站点。
NameVirtualHost 192.168.168.154:8080

<VirtualHost 192.168.168.154:80>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-80
<VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-8080
</VirtualHost>
<VirtualHost 192.168.168.154:80>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-80
</VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-8080
</VirtualHost>

基于IP地址虚拟主机:
#cd /etc/sysconfig/network-scripts //服务器有两张网卡eth0、eth1,eth0:192.168.167.157,
#cp ifctg-eth1 ifcfg-eth1:0 //eth1:192.168.167.156.eth0网卡用作了基于主机名的虚拟主机,
#vi ifcfg-eth1:0 //eth1通过IP别名方式,为其绑定多个IP地址,用于提供基于IP地址
DEVICE=eth1:0 //的虚拟主机。eth1绑定的第一张虚拟网卡的设备名为eth1:0,对应的
IPADDR=192.168.167.157 //配置文件为ifcfg-eth1:0,通过修改配置文件中的设备名和IP地址,
#ifdown eth1 //即可实现IP地址的绑定。
#ifup eth1:0
#ifup eth1
#ping 192.168.167.157
#ping 192.168.167.156

#vi /etc/hosts //192.168.167.156:www.example2.com,192.168.167.157:
192.168.167.157 www.example3.com //www.example3.com,试为其创建基于IP地址的虚拟主机,端口使用80
#mkdir -p /var/www/example2 //目录分别为/var/www/example2、/var/www/example3,为这两个域再增
#mkdir -p /var/www/example3 //8080端口,使其也能在8080端口发布另外的Web站点。Web站点根目录分
///var/www/example2-8080、/var/www/example3-8080
#vi httpd.conf
Listen 80
Listen 8080
<VirtualHost 192.168.167.156:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
<VirtualHost 192.168.167.156:8080>
ServerName www.example2.com
DocumentRoot /var/www/example2-8080
</VirtualHost>

<VirtualHost 192.168.167.157:80>
ServerName www.exaple3.com
DocumentRoot /var/www/example3
</VirtualHost>
<VirtualHost 192.168.167.157:8080>
ServerName www.exaple3.com
DocumentRoot /var/www/example3-8080
</VirtualHost>

热点内容
我的世界电脑版地球都市服务器ip 发布:2024-05-16 01:52:43 浏览:559
华为配置低怎么升级 发布:2024-05-16 01:48:06 浏览:909
树莓派python怎么编译 发布:2024-05-16 01:48:02 浏览:953
tortoisesvn修改服务器地址 发布:2024-05-16 01:46:44 浏览:435
安卓手机上的sn在哪里看 发布:2024-05-16 01:45:47 浏览:410
androidsetprop 发布:2024-05-16 01:14:07 浏览:986
安卓安装包格式是什么意思 发布:2024-05-16 00:39:59 浏览:85
发泄解压机器 发布:2024-05-16 00:14:57 浏览:239
视频存储优化 发布:2024-05-16 00:09:10 浏览:173
范围存储 发布:2024-05-16 00:06:46 浏览:653