文档章节

在apache下建立多个站点

 蜗牛奔跑
发布于 2015/11/02 14:02
字数 1608
阅读 32
收藏 0
在apache下建立多个站点 
在httpd.conf中使用如下内容 

NameVirtualHost 211.161.197.119 

<VirtualHost 211.161.197.119> 
     ServerName bug.54ncr.com 
     DocumentRoot /www/http/mantisbt 
</VirtualHost> 
<VirtualHost 211.161.197.119> 
     ServerName mycity.54ncr.com 
     DocumentRoot /www/http/billing_system 
</VirtualHost>

=================================================================

ServerAlias:服务器别名,在Apache中可以用于设置虚拟主机接收到个域名,也可以用于接收泛解析的域名。具体的设置方法如下:

一、用于设置虚拟主机接收多个域名

一个虚拟主机常常会接收多个域名解析,比如:一个虚拟主机要同时介绍fke.la,54ncr.com两个域名,或者是两个二级域名,如:www.fke.la, www1.fke.la,对于这种情况,可以在用ServerAlias轻松做到,打开apache的设置文件:httpd.conf,在该主 机的设置代码中:

<VirtualHost 192.168.1.12>

ServerName “fke.la” #默认域名;

ServerAlias 54ncr.com www1.fke.la #不同域名用空格隔开;

DocumentRoot “D:\wwwroot\fke.la

<Directory “D:\wwwroot\fke.la”>

Options Indexes FollowSymLinks

AllowOverride all

</Directory>

</VirtualHost>

保存httpd.conf文件,重启apche即可生效。

二、 用于接收泛域名解析

一个虚拟主机是可以接收泛域名解析的,也是通过SeverAlias选项设置,通过设置该选项不仅可以接收二级泛域名解析,也可以接收三级、四级泛 域名解析,具体设置如下:

<VirtualHost 192.168.1.12>

ServerName “fke.la” #默认域名;

ServerAlias *.fke.la #用*表示泛域名,如果要接收三级泛域名解析,可以写成这样:*.my.fke.la;

DocumentRoot “D:\wwwroot\fke.la”

<Directory “D:\wwwroot\fke.la”>

Options Indexes FollowSymLinks

AllowOverride all

</Directory>

</VirtualHost>

保存httpd.conf文件,重启apche即可生效。


=================================================================
在DNS服务器上添加一条A记录。其中,“主机名”填写“*” ,“指向”填写为自己网站的服务器IP。这样所有
*.yourdomain.cn 都指向自己网站的服务器IP 所以不管你申请什么名字,如:dlzok.yourdomain.cn 都解析到这个IP上。最主要的是apache的配置了。
将所有的虚拟主机段先删除,加入
ServerName local
ServerAlias *
UseCanonicalName OFF
VirtualDocumentRoot D:/www/%1
ServerName在这里不起作用,ServerAlias会将域名解析到D:/www下对应的目录,这样就不用每次都修改httpd.conf文件 了。
需要注意的是使用VirtualDocumentRoot指令需要加载mod_vhost_alias模块,
去掉包含mod_vhost_alias行对应的LoadModule和AddModule前面的"#",restart一下apache就OK了
试了一下,果然很爽,可以使用
VirtualDocumentRoot /www/%2+
来实现泛解析,不过不管什么二级域名都被解析到根目录了,也就是说
*.yourdomain.com 会被指向 /www/yourdomain.com
为了解决这个问题,可以用
VirtualDocumentRoot /www/%2+/%0
来实现二级域名分目录,即
www.yourdomain.com 会被指向 /www/yourdomain.com/www.yourdomain.com
test1.yourdomain.com 会被指向 /www/yourdomain.com/test1.yourdomain.com
test2.yourdomain.com 会被指向 /www/yourdomain.com/test2.yourdomain.com
有点不足,这样,www.yourdomain.com 也需要在yourdomain.com目录下再建一个目录了,要是www能到根目录,其他二级域名到二级目录就好了,不过也好,这样规范点。
主要是以下这2句,再也不用一个个绑域名了,只需要建立对应域名的目录
UseCanonicalName Off
VirtualDocumentRoot /www/%2+/%0
==============================================================
一、使用 mod_vhost_alias
1. 简单的动态虚拟主机
# 从 Host: 头中取得服务器名字 Server Name
UseCanonicalName Off
# 这里的日志格式,可以在将来通过第一个参数域来分隔不同的虚拟主机的日志
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
# 在返回请求的文件名的路径中包含进服务器名字: server name
VirtualDocumentRoot /www/hosts/%0/docs
VirtualScriptAlias /www/hosts/%0/cgi-bin
2. 更为有效的基于 IP 地址的虚拟主机
# 从 IP 地址反解析得到服务器名字(server name)
UseCanonicalName DNS
# 在日志中包含 IP 地址,便于后续分发
LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
# 在文件路径中包含 IP 地址
VirtualDocumentRootIP /www/hosts/%0/docs
VirtualScriptAliasIP /www/hosts/%0/cgi-bin
二、使用 mod_rewrite
1. 使用 mod_rewrite 实现简单的动态虚拟主机
# 从 Host: 头获取服务器名字
UseCanonicalName Off
# 可分割的日志
LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
# ExecCGI is needed here because we can't force
# CGI execution in the way that ScriptAlias does
Options FollowSymLinks ExecCGI
# 接下来是关键部分
RewriteEngine On
# a ServerName derived from a Host: header may be any case at all RewriteMap lowercase int:tolower
## 首先处理普通文档:
# 允许变名 /icons/ 起作用 - 其他变名类同
RewriteCond %{REQUEST_URI} !^/icons/
# 允许 CGIs
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# 开始“变戏法”
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1
## 现在处理 CGIs - 我们需要强制使用一个 MIME 类型
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]
# 好了!
2. 使用独立的虚拟主机配置文件 vhost.map
vhost.map 文件包含了类似下面的内容:
www.customer-1.com /www/customers/1
www.customer-2.com /www/customers/2
# ...
www.customer-N.com /www/customers/N
http.conf 包含了:
RewriteEngine on
RewriteMap lowercase int:tolower
# 定义映像文件
RewriteMap vhost txt:/www/conf/vhost.map
# 和上面的例子一样,处理变名
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# 这里做基于文件的重新映射
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1




TP中实现自定义子域名的解决方式

 

浏览:1710 发布日期:2013/09/13 分类:技术分享 关键字: 自定义子域名

如果你的网站有会员,希望每个会员都可以用一个个性的子域名来显示他的主页,怎么处理啊?
这里提供一种 理论上无限制任何会员数量的解决方式,当然得要你的服务器和域名支持
第一:你的域名需要支持泛解析
第二:你的服务器必须支持绑定泛解析域名

当然这两种情况不能满足的情况下也不是不能解决,只是没那么强大和方便(比如你就固定解释指定几个子域名,然后服务器固定绑定几个子域名,这个是这里介绍方法中的特殊情况,就好比我说任何数乘以0都等于0,你说0乘以也等于0一样的道理)

行了,别废话了,直接上代码:
1、入口文件 


2、默认模块的默认操作:


3、.htacees文件的写法



当然很多细节的地方还要去考虑,比如第二步中的 subDomain中不存在的情况下应该怎么处理

这里只是提供一种思路,如果您有更好的方式,也希望您不要吝啬,一起分享给大家


本文转载自:

粉丝 38
博文 615
码字总数 118352
作品 0
海淀
私信 提问
如何使用 Apache Web 服务器配置多个站点

如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。 在我的上一篇文章中,我解释了如何为单个站点配置 Apache Web 服务器,事实证明这很容易。在这篇文章中,我将向你展示如何使用...

作者: David Both
2018/10/25
0
0
Tomcat 与 Apache 连接器集成

在一台机器上配置多个站点,每个站点有自己独立的域名。 假设在本地 Tomcat 服务器有一个站点 bbs.localhost。 Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接...

ossez
2011/05/02
245
2
共享主机配置php open_basedir提升安全 防止文件被跨站访问

关于nginx/php-fpm/apache modphp中的安全配置,可参考我之前的另外一个文章: 《正确设置nginx/php-fpm/apache 提高网站安全性 防止被挂木马》 http://zhangxugg-163-com.iteye.com/blog/11...

月影又无痕
2016/01/08
686
0
单台centos机器启动多个vsftpd服务

单服务器上vsftpd服务指定不同的端口以及不同的系统用户,来启动多个vsftpd服务。 单服务器上实现不同的系统用户来指定多个不同的虚拟用户来管理多站点目录(各个站点目录的权限是不同的系统...

科技小能手
2017/11/12
0
0
httpd服务之部署AWStats日志分析系统

AWStats是使用Perl语言开发的一款开源日志分析系统,不仅可以用来分析Apache网站日志,也可以用来分析Samba、Vsftpd、IIS等服务的日志信息。结合crond等任务计划服务,可以对不断增长的日志内...

杨书凡
2017/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
22分钟前
20
3
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部