« 上一篇下一篇 »

在香港云服务器使用Apache配置多个站点最快捷的办法

  在国内我们平常的网站发布中很多情况下都无法做到一个IP对应一个站点,在IP4的情况下IP的资源是相对有限的。然而作为最流行的Apache自然也考虑到这种情况,那么接下来看看apache服务器怎么配置一个IP多个站点。

  对于咱苦逼的中小站长来说,服务器租用成本一直是头疼的问题,如何同一个主机放置多个站点是个非常不错的想法。为了让有限的资源满足我们无限的折腾,今天来跟大家说一下,怎样实现在一个apache服务器上放置多个站点的问题。当然这些个小儿科只是针对入门级的人员来说的,各位高手们休要拍砖!

   一个ip地址放置多个站点(基于主机名的虚拟主机,即共享IP的虚拟空间),简单的来说呢,就是通过apache的虚拟主机进行实现的。下面我们看一下具体的操作步骤:
关于apache的配置文件,不同的linux主机可能放置在不同的地方,尤其对于那些编译安装的环境来说,放置的位置就更加不固定了,找到httpd.conf用编辑器打开。
查找如下的配置信息:
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

上面的这段配置信息就是apache为我们提供的添加虚拟主机的模板,你可以选择在原来的基础上进行修改,也可以按着这个模板自己添加,通常也是整个文件的末尾处添加如下信息:
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/web/wordpress
ServerName www.mr-c.cn
ErrorLog logs/www.mr-c.cn-error_log
CustomLog logs/www.mr-c.cn-access_log common
</VirtualHost>
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/web/wosn
ServerName www.wosn.net
ErrorLog logs/www.wosn.net-error_log
CustomLog logs/www.wosn.net-access_log common
</VirtualHost>

在这里我们用到的是沃森本人的两个域名www.wosn.net和www.mr-c.cn,在实际应用中将其替换为自己的域名。当然,如果你要配置更多的站点,可以参考这样的方式继续添加,我们用两个站点作为说明。
以域名www.wosn.net为例,需要说明一个问题,如果你在解析域名的时候将www.wosn.net和wosn.net都进行了解析,这个时候你访问wosn.net的时候可能访问到的是www.mr-c.cn这个站点而不是www.wosn.net,这该怎么办呢?我们可以在配置文件中再添加一个虚拟主机,即在配置文件添加:
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/web/wosn
ServerName wosn.net
ErrorLog logs/www.wosn.net-error_log
CustomLog logs/www.wosn.net-access_log common
</VirtualHost>

修改完配置文件后,记得一定要重启apache,否则修改是不会起到作用的,这是很多刚上手的人员最容易忽略的问题。
这样,一个apache服务器放置多个站点的配置工作就完成了,希望对大家有所帮助!
HTTP 错误 403 - 禁止访问,即403 Forbidden:You don't have permission to access / on this server.
可能是权限不足引起的问题。
解决方法:
打开apache的配置文件httpd.conf,逐行检查。找到:
此处“Deny from all”为拒绝一切连接。
把此行修改为 “Allow from all”,即可解决问题。
修改后的代码为:
再在浏览器里打开,显示it works!问题解决。
403 Forbidden主要原因分析
1、你的IP被列入黑名单
2、你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了;
3、网站域名解析到了空间,但空间未绑定此域名;
4、你的网页脚本文件在当前目录下没有执行权限;
5、在不允许写/创建文件的目录中执行了创建/写文件操作;
6、服务器繁忙,同一IP地址发送请求过多,遭到服务器智能屏蔽;
设置格式的注意事项,需要说明的是一般除了设置serverName和DocumentRoot外,还需要对目录进行设置,即<Directory></Directory>的东西。否则会出现无权限访问之类的问题,其他参数诸如错误日志、用户访问信息、别名设置等等可以设置也可以省略。
以上方法也可以写在虚拟空间配置<VirtualHost *:80>....</VirtualHost>中间,如下格式:
以lampp环境为例子,其他环境只是配置文件的路径不同。
先要在 ? lampp/etc/httpd.conf ( 这个是Apache 总的配置文件)中,将虚拟路径的注释去掉。
#Include etc/extra/httpd-vhosts.conf
使httpd-vhosts.conf文件起作用,或者直接在httpd.conf中写配置也可以,但不建议这么做。
相关的配置有:Listen ?NameVirtualHost ?<VirtualHost>
1. Listen ?要监听的端口,多个端口,要写多个Listen;否则Apache启动的时候,不会启动相应的接口。
比如:
Listen 80
Listen 8080
2. NameVirtualHost 如果没有这个,<VirtualHost>标签就没什么作用。(新版已废除)
(这里特指基于域名访问的情况,若是基于IP访问的,以第一个指定IP的VirtualHost为准,每个IP可以单独指定)
一个NameVirtualHost 可以对用多个<VirtualHost>,每个<VirtualHost>必须有自己的NameVirtualHost(我猜的);
NameVirutalHost *:80
制定这个主机的IP和端口,如果服务器上有多个IP,就可以制定某个IP的某个端口是哪个主机。
(新版的Apache已经去除了NameVirtualHost 这个配置,因为确实没什么用,参数在VirtualHost中都已经指明了)
3. 最关键的VirtualHost
重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。
因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)
和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认。
所以,我的第一个VirtualHost是
<VirtualHost *:80>
ServerName *
DocumentRoot </opt/lampp/htdocs/guest>
<Directory /opt/lampp/htdocs/guest>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>

后面的,依次添加就可以
<VirtualHost *:80>
ServerName www.myweb1.com
DocumentRoot </opt/lampp/htdocs/myweb1>
<Directory /opt/lampp/htdocs/myweb1>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>

nginx虚拟主机配置是在vhost.conf文件;

上述的例子IP都是192.168.1.104,域名分别是www.php.com和bbs.php.com。因而可知apahce是通过ServerName来识别同一个IP下的不同站点的。
在实际应用中你只需要将IP192.168.1.104、域名www.php.com

 

如果你想一个IP配置一个站点,又不想花高费用,那么可以考虑购买香港机房的服务器,轻松以低价格获得独立IP的服务