本文隸屬與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/