Apache服务器配置多个站点的方法(基于主机名)

沃森博客 2017年10月22日00:15:08服务器评论1,0141阅读模式

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

Apache服务器配置多个站点的方法(基于主机名)

Apache服务器配置多个站点的方法(基于主机名)

一个ip地址放置多个站点(基于主机名的虚拟主机,即共享IP的虚拟空间),简单的来说呢,就是通过apache的虚拟主机进行实现的。下面我们看一下具体的操作步骤:

1.找到apache配置文件:httpd.conf

关于apache的配置文件,不同的linux主机可能放置在不同的地方,尤其对于那些编译安装的环境来说,放置的位置就更加不固定了,找到httpd.conf用编辑器打开。

打开Apache的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号。  
LoadModule vhost_alias_module modules/mod_vhost_alias.so
去掉#意思是启用apache的虚拟主机功能。  
Include conf/extra/httpd-vhosts.conf  
去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置。打开它就可以在httpd-vhosts.conf文件里写虚机配置,而不是一定要在 httpd.conf 里面写了。直接在httpd.conf中写配置也可以,但不建议这么做。

2.修改配置文件,添加虚拟主机

查找如下的配置信息:

#<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>

3.配置完成,重启apache

修改完配置文件后,记得一定要重启apache,否则修改是不会起到作用的,这是很多刚上手的人员最容易忽略的问题。

这样,一个apache服务器放置多个站点的配置工作就完成了,希望对大家有所帮助!


出现 HTTP 错误 403 - 禁止访问解决办法

HTTP 错误 403 - 禁止访问,即403 Forbidden:You don't have permission to access / on this server.

可能是权限不足引起的问题。

解决方法:

打开apache的配置文件httpd.conf,逐行检查。找到:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

此处“Deny from all”为拒绝一切连接。

把此行修改为 “Allow from all”,即可解决问题。

修改后的代码为:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>

再在浏览器里打开,显示it works!问题解决。

403 Forbidden主要原因分析

1、你的IP被列入黑名单

2、你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了;

3、网站域名解析到了空间,但空间未绑定此域名;

4、你的网页脚本文件在当前目录下没有执行权限;

5、在不允许写/创建文件的目录中执行了创建/写文件操作;

6、服务器繁忙,同一IP地址发送请求过多,遭到服务器智能屏蔽;


设置格式的注意事项,需要说明的是一般除了设置serverName和DocumentRoot外,还需要对目录进行设置,即<Directory></Directory>的东西。否则会出现无权限访问之类的问题,其他参数诸如错误日志、用户访问信息、别名设置等等可以设置也可以省略。

以上方法也可以写在虚拟空间配置<VirtualHost *:80>....</VirtualHost>中间,如下格式:

<VirtualHost *:80>
 #ServerAdmin admin@myxzy.com
 ServerName dummy-host.example.com?
 DocumentRoot "g:/www2"
 DirectoryIndex?index.html?index.php??
 ServerAlias?www.dummy-host.example.com??
 <Directory "g:/www2">
 Options FollowSymLinks
 AllowOverride All
 Require all granted
 </Directory> 
</VirtualHost>

 


Apache 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文件;

欢迎各位留言交流,共同进步!

沃森博客
  • 本文由 发表于 2017年10月22日00:15:08
  • 本文来自互利网收集整理,问题反馈联系邮箱:wosnnet@foxmail.com,转载请务必保留本文链接:https://wosn.net/707.html

发表评论