本文隶属与20170829Apache学习
Apache 实例
一个域名访问一个网页
<VirtualHost *:80>
Servername php.gac.cn
DocumentRoot /var/www/html/php
#网站的目录设置为/var/www/html/php访问时用http://php.gac.cn
</VirtualHost>
域名/关键字 访问不同的网页
<VirtualHost *:80>
Servername php.gac.cn
DocumentRoot /var/www/html/php
#网站的目录设置为/var/www/html/php访问时用http://php.gac.cn
</VirtualHost>
在/var/www/html/php
目录下新建php1,php2目录,在每个目录里放上网页,则可通过http://php.gac.cn/php1
,http://php.gac.cn/php2
访问两个网页
apache反向代理 一个域名反向代理多个discuz站
参考
案例环境
反向代理服务器 :Centos apache
discuz站所在服务器: Ubuntu apache
实现
通过http://www.domain.cn/xxx,访问Ubuntu里面里面已存在的不同的discuz网站
问题
discuz会根据访问的域名如http://xxx.cn生成返回的html网页中的连接,所以访问discuz的连接必须是http://www.domain.cn/xxx,而在公网上www.domain.cn指向的是反向代理服务器 (Centos )
一种方案
反向代理服务器 (Centos apache)配置
apache配置文件填入
<VirtualHost *:80>
Servername www.domain.cn
ProxyRequests Off
#zx站
ProxyPass /zx/ http://www.domain.cn/zx/
ProxyPassReverse /zx/ http://www.domain.cn/zx/
#hjl站
ProxyPass /hjl/ http://www.domain.cn/hjl/
ProxyPassReverse /hjl/ http://www.domain.cn/hjl/
<Proxy *>
Order Deny,Allow
Allow from all
</Proxy>
</VirtualHost>
因为在公网上www.domain.cn指向代理服务器(centos),所以为了让代理服务器(centos)将www.domain.cn解析为discuz所在的服务器(ubuntu),在代理服务器(centos)中添加hosts
echo discuz所在的服务器(ubuntu)ip www.domain.cn >> /etc/hosts
discuz所在的服务器(ubuntu,apache)配置
apache配置文件填入
#proxy
<VirtualHost *:80>
ServerName www.domain.cn
DocumentRoot /var/www
ErrorLog /var/data/log/proxy.log
CustomLog /var/data/log/proxy.log combined
</Virtualhost>
将zx站的目录放在/var/www/zx目录下,hjl站的目录放在/var/www/hjl目录下
这样当访问http://www.domain.cn/zx/(对公网来说www.domain.cn指向代理服务器)时,代理服务器会自动请求http://www.domain.cn/zx/(对代理服务器来说www.domain.cn指向disucz站点服务器),discuz返回的网页里面所有的连接也都是http://www.domain.cn/zx/开头的,可以持续访问。
discuz操作
zx站和hjl站的域名都是www.domain.cn,他们的cookies保存如果都在根目录就会冲突,将zx站默认cookies目录设置为/zx/,hjl站默认cookie目录设置为/hjl/就不会冲突
vi discuz目录/config/config_global.php
把$_config['cookie']['cookiepath'] = '';
更改为$_config['cookie']['cookiepath'] = '/xxx/';
xxx代表zx或hjl
discuz控制面板里也把相应的连接设置为http://www.domain.cn/xxx/