网络上的每一个Web站点都有一个惟一的身份标识,从而使客户机能够准确地访问。这一标识由三部分组成,即TCP端口号、IP地址和主机头名,通常有三种不同的实现途径。
途径一、TCP端口法
Web站点的默认端口一般为80,如果改变这一端口,就能实现在同一服务器上新增站点的目的
途径二、IP地址法
一块网卡只设置了一个IP地址。如果我们为这块网卡绑定多个IP地址,每个IP地址对应一个Web站点,那么同样可以实现“一机多站”的目的。
途径三、主机头法
在不更改TCP端口和IP地址的情况下,同样可以实现“一机多站” ,就是在一个端口上绑定多个域名,然后每个域名可以指向不同的目录进行访问,主机头是IIS里面的说法
实例场景
本次场景是一台服务器同时运行tomcat,apahce服务,如何分别使用不同的域名访问web服务,希望通过apache使用80端口,然后在分发对应的tomcat,实现tomcat和apache在一个服务器上共存. 以下通过设置不同的端口,通过apache进行分发。
环境与软件
操作系统:win2008 R2 apache 2.2 端口设定:80 tomcat 7.0.72 端口设定:8080
编辑C:\Windows\System32\drivers\etc\hosts最下面添加
127.0.0.1 www.a.com www.b.com
Tomcat配置主机头
<Host name="www.a.com" appBase="webapps" autoDeploy="true" unpackWARs="true" />
conf\Catalina创建 www.a.com目录(tomcat启动会自动创建),并创建ROOT.xml
<?xml version="1.0" encoding="UTF-8"?> <Context docBase="xxx\webapp" path="/" reloadable="true"> </Context>
apache配置
开启vhosts及proxy代理服务的配置,编辑httpd.conf去掉下面的相关注释:
#Include conf/extra/httpd-vhosts.conf #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_http_module modules/mod_proxy_http.so
编辑httpd-vhosts.conf
<VirtualHost *:80> ServerName www.a.com ServerAlias a.com ProxyIOBufferSize 8192 ProxyRequests Off ProxyVia Full ProxyPass / http://www.a.com:8080/ smax=5 max=20 ttl=120 retry=300 </VirtualHost> <VirtualHost *:80> ServerName www.b.com ServerAlias b.com DocumentRoot xxx\www <Directory "xxx\www"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> ErrorLog "logs/dummy-host2.example.com-error.log" CustomLog "logs/dummy-host2.example.com-access.log" common </VirtualHost>
然后访问www.a.com打开的是tomcat,访问www.b.com的打开的是apache配置的php,实现了单IP多域名多站点的功能。
扫码关注