`
jackytang520
  • 浏览: 138476 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

php:解决apache的域名设置的问题 相当于iis的主机头名

阅读更多
刚才在解决apache的域名设置的问题,遇到一些问题,记录一下

打开httpd.conf 文件进行配置 !

可在最后面加上如下代码:  ( 不是任意位置的哦,不要加在一些代码之间 如: iFModule 块之间 )

可以直接加在文件内容的最下面:

代码如下:

NameVirtualHost 192.168.123.33:80

<VirtualHost 192.168.123.33:80>

ServerNamewww.taobaoxs.com
ServerAlias taobaoxs.com *.taobaoxs.com
DocumentRoot D:/usr/www/updateweb

</VirtualHost>

<VirtualHost 192.168.123.33:80>

ServerNamewww.updateweb.cn
DocumentRoot D:\usr\www\phpmyadmin

</VirtualHost>


但是测试的时候会有时会出现如下错误:

<title>403 Forbidden</title>

You don't have permission to access /on this server.

这是因为定义了默认对网站根的访问权限。

解决方法是:

将httpd.conf文件里的

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

这里改成

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>

问题解决


以上设置完之后重启一下apache服务  就可以了 !


附一个解决问题在网上找的相关资料:



下面是apache 的文档:

必须指定服务器IP地址(和可能的端口)来使主机接受请求,这个可以用NameVirtualHost指令来进行配置。如果服务器上所有的

IP地址都会用到,你可以用"*"作为NameVirtualHost的参数。如果你打算使用多端口(如运行SSL)你必须在参数中指定一个端口

号,比如"*:80"。请注意,在NameVirtualHost指令中指定IP地址并不会使服务器自动侦听那个IP地址。请参阅设置Apache使用

的地址和端口一章获取更多详情。另外,这里设定的IP地址必须对应服务器上的一个网络接口。

下一步就是为每个虚拟主机建立<VirtualHost>段。<VirtualHost>的参数与NameVirtualHost的参数必须是一样的(比如说,一

个IP地址或"*"代表的所有地址)。在每个<VirtualHost>段中,至少要有一个ServerName指令来指定伺服哪个主机和一个

DocumentRoot指令来说明这个主机的内容位于文件系统的什么地方。

取消中心主机(Mainhost)
如果你想在现有的web服务器上增加虚拟主机,你必须也为现存的主机建造一个<VirtualHost>定义块。这个虚拟主机中

ServerName和DocumentRoot所包含的内容应该与全局的ServerName和DocumentRoot保持一致。还要把这个虚拟主机放在配置文

件的最前面,来让它扮演默认主机的角色。

比如说,假设你正在为域名www.domain.tld提供服务,而你又想在同一个IP地址上增加一个名叫www.otherdomain.tld的虚拟主

机,你只需在httpd.conf中加入以下内容:

NameVirtualHost *:80

<VirtualHost *:80>

ServerNamewww.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain

</VirtualHost>

<VirtualHost *:80>

ServerNamewww.otherdomain.tld
DocumentRoot /www/otherdomain

</VirtualHost>


当然,你可以用一个固定的IP地址来代替NameVirtualHost和<VirtualHost>指令中的"*"号,以达到一些特定的目的。比如说,

你可能会希望在一个IP地址上运行一个基于域名的虚拟主机,而在另外一个IP地址上运行一个基于IP的或是另外一套基于域名

的虚拟主机。

很多服务器希望自己能通过不只一个域名被访问。我们可以把ServerAlias指令放入<VirtualHost>小节中来解决这个问题。比

如说在上面的第一个<VirtualHost>配置段中ServerAlias指令中列出的名字就是用户可以用来访问同一个web站点的其它名字:

ServerAlias domain.tld *.domain.tld

这样,所有对域domain.tld的访问请求都将由虚拟主机www.domain.tld处理。通配符标记"*"和"?"可以用于域名的匹配。当然

你不能仅仅搞个名字然后把它放到ServerName或ServerAlias里就算完了。你必须先在你的DNS服务器上进行配置,将这些名字

和您服务器上的一个IP地址建立映射关系。

最后,你可以把其他一些指令放入<VirtualHost>段中,以更好的配置一个虚拟主机。大部分指令都可以放入这些

<VirtualHost>段中以改变相应虚拟主机配置。如果您想了解一个特定的指令是否可以这样运用,请参见指令的作用域。主服务

器(main server)范围内的配置指令(在所有<VirtualHost>配置段之外的指令)仅在它们没有被虚拟主机的配置覆盖时才起作用



这样,当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果能够匹配,它

就会查找每个与这个IP地址相对应的<VirtualHost>段,并尝试找出一个与请求的主机名相同的ServerName或ServerAlias配置

项。如果找到了,它就会使用这个服务器。否则,将使用符合这个IP地址的第一个列出的虚拟主机。

综上所述,第一个列出的虚拟主机充当了默认虚拟主机的角色。当一个IP地址与NameVirtualHost指令中的配置相符的时候,主

服务器中的DocumentRoot将永远不会被用到。所以,如果你想创建一段特殊的配置用于处理不对应任何一个虚拟主机的请求的

话,你只要简单的把这段配置放到<VirtualHost>段中,并把它放到配置文件的最前面就可以了。








Apache的Order Allow Deny ( 摘自:http://dsherb628.blog.163.com/blog/static/18239027200822515723437/)



前段时间做了个Apache的HTTP代理服务器,其中的order allow,deny这部分弄的不太懂,于是上网找资料看,谁知道越看越糊涂,其中有些难以分辨对错甚至是误导。就像破解windows系统密码的一些文章那样,很多都是人云亦云的,并没有经过测试。废话少说,先把我经过测试后分析总结出来的结论show出来,相信这对大家的理解非常有帮助。


总则——

影响最终判断结果的只有两点:

1.       order语句中allow、deny的先后顺序;

2.       allow、deny语句中各自包含的范围。


温馨提醒——

1.       修改完配置后要保存好并重启Apache服务,配置才能生效;

2.       开头字母不分大小写;

3.       allow、deny语句不分先后顺序,谁先谁后不影响最终判断结果;但都会被判断到;

4.       order语句中,“allow,deny”之间“有且只有”一个逗号(英文格式的),而且先后顺序很重要;

5.       Apache有一条缺省规则,“order allow,deny”本身就默认了拒绝所有的意思,因为deny在allow的后面;同理,“order deny,allow”本身默认的是允许所有;当然,最终判断结果还要综合下面的allow、deny语句中各自所包含的范围;(也就是说order语句后面可以没有allow、deny语句)

6.       allow、deny语句中,第二个单词一定是“from”,否则Apache会因错而无法启动,

7.       “order allow,deny”代表先判断allow语句再判断deny语句,反之亦然。


上面说的都是要记住的,而下面说的是我独创的理解方法。如果有人看了而没有豁然开朗的感觉,那算是我的失败!


判断原则分4步走——

1.       首先判断默认的;

2.       然后判断逗号前的;

3.       最后判断逗号后的;

4.       最终按顺序叠加而得出判断结果。


上面三点我说的简单而形象,主要是为了便于记忆。暂时不理解不要紧,继续看下面详细的解说自然会明白。下面以一个普通例子来做解释——

order deny,allow

allow from 218.20.253.2

deny from 218.20

1.       所谓“首先判断默认的”,就是判断“order deny,allow”这句,它默认是允许所有;

2.       所谓“然后判断逗号前的”,因为在本例子中的order语句里面,deny在逗号的前面,所以现在轮到判断下面的deny语句了——“deny from 218.20”;

3.       所谓“最后判断逗号后的”,因为在本例子中的order语句里面,allow在逗号的后面,所以最后轮到判断下面的allow语句了——“allow from 218.20.253.2”。

4.       所谓“最终按顺序叠加而得出判断结果”,这是一个形象化了的说法,我把每一步判断都看作一个“不透明的图层”,然后一步步按顺序叠加上去,最终得出的“图像”就是判断结果。


用过作图软件的人应该都知道“图层”是怎么回事,我估计Apache关于order allow deny这方面的设计理念和photoshop等作图软件关于图层的设计理念是一样的。即“游戏规则”是一样的。

那么上面的例子就可以是这么一个步骤和图像——

1.       先画一个白色的大圆,代表“order deny,allow”语句,默认意思是允许所有;

2.       然后画一个小一点的黑色圆,代表“deny from 218.20”语句,意思是拒绝所有以218.20开头的IP,放进白色的大圆里面;

3.       最后再画一个白色的圆,代表“allow from 218.20.253.2”语句,意思是允许218.20.253.2通过,放在黑色圆的上面。

4.       到此为止,我们已经可以看到一个结果了,白色大圆上面有一个黑色圆,黑色圆上面还有一个白色圆。最后,我们所能看到的黑色部分就是拒绝通行的,剩下的白色部分都是允许通行的。判断的结果就是这么简单形象!


如果不懂的用作图软件,我们再来个非常贴近生活的比喻——

把上面的例子改动一点点,以便更好的理解:

order deny,allow

allow from 218.20.253.2

deny from 219.30

1.       首先拿一张A4白纸,代表第order语句,意思是允许全部;

2.       然后拿一张黑色纸剪一个圆,放在A4纸里面的某个位置上,代表deny语句,意思是拒绝所有以219.30开头的IP;

3.       最后拿白纸再剪一个圆,放在黑色圆的旁边,代表allow语句,意思是允许218.20.253.2通过;注意,这个例子不是放进黑色圆里面了,因为deny和allow语句不再有相互包含的关系了。

4.       A4纸上面有一个黑色圆和一个白色圆,结果自然很明显了。不过白色的A4纸上再放一个白色的圆,显然是多余的了,因为大家都是白色的,都代表允许,所以就重复了,可以去掉白色的圆而不会影响判断结果。


如果看到这里还没明白,那一定是我还有什么没说清楚的。那么请好好分析我所做过的测试例子,将在最后列出来。

在这里再啰嗦一下,allow、deny语句后面跟的参数有多种形式,有不同的表达方式,我在网上看到的做法是deny from IP1 IP2 IP3或allow from domain.com等。其它的表达方式大家再找别的资料看吧。我想说的是另一种表达方式:

order deny,allow

allow from IP1 IP2

allow from domain.info

allow from 219.20.55.0/24

deny from all

我没具体验证过这是否对,不过这样是可以正常启动Apache服务的,按道理应该是正确的表达方式。哈哈,像我这样的入门者只能这样了,还希望大家多多指教!




下面是测试过的例子:
--------------------------------
Order deny,allow
allow from all
deny from 219.204.253.8
#全部都可以通行
-------------------------------
Order deny,allow
deny from 219.204.253.8
allow from all
#全部都可以通行
-------------------------------
Order allow,deny
deny from 219.204.253.8
allow from all
#只有219.204.253.8不能通行
-------------------------------
Order allow,deny
allow from all
deny from 219.204.253.8
#只有219.204.253.8不能通行
-------------------------------
-------------------------------
Order allow,deny
deny from all
allow from 219.204.253.8
#全部都不能通行
-------------------------------
Order allow,deny
allow from 219.204.253.8
deny from all
#全部都不能通行
-------------------------------
Order deny,allow
allow from 219.204.253.8
deny from all
#只允许219.204.253.8通行
-------------------------------
Order deny,allow
deny from all
allow from 219.204.253.8
#只允许219.204.253.8通行
-------------------------------
--------------------------------
Order deny,allow
#全部都可以通行(默认的)
-------------------------------
Order allow,deny
#全部都不能通行(默认的)
-------------------------------
Order allow,deny
deny from all
#全部都不能通行
-------------------------------
Order deny,allow
deny from all
#全部都不能通行
-------------------------------
对于上面两种情况,如果换成allow from all,则全部都可以通行!
-------------------------------
Order deny,allow
deny from 219.204.253.8
#只有219.204.253.8不能通行
-------------------------------
Order allow,deny
deny from 219.204.253.8
#全部都不能通行
-------------------------------
Order allow,deny
allow from 219.204.253.8
#只允许219.204.253.8通行
-------------------------------
Order deny,allow
allow from 219.204.253.8
#全部都可以通行
-------------------------------
-------------------------------
order deny,allow
allow from 218.20.253.2
deny from 218.20
#代表拒绝218.20开头的IP,但允许218.20.253.2通过;而其它非218开头的IP也都允许通过。
-------------------------------
order allow,deny
allow from 218.20.253.2
deny from 218.20
#和上面的差不多,只是掉换的order语句中的allow、deny先后顺序,但最终结果表示全部都拒绝!
-------------------------------
分享到:
评论

相关推荐

    iis 和apache 怎么同时用域名访问的

    ### IIS与Apache如何在同一台服务器上通过域名访问 在实际的应用场景中,有时需要在同一台服务器上同时运行IIS(Internet Information Services)与Apache两个Web服务器。这通常发生在需要支持不同应用程序或服务的...

    apache与IIS合成配置

    4. **IIS 配置**:IIS 通常用于托管 ASP.NET 或其他微软技术的网站。在 Apache 中,可以通过 `ProxyPass` 和 `ProxyPassReverse` 指令将某些路径的请求代理到 IIS 服务器上。例如,对于 ASP 网站 `...

    IIS与Apache反向代理

    【IIS与Apache反向代理】是指在...通过IIS与Apache的反向代理,不仅解决了技术兼容性问题,还简化了服务器管理,提高了系统的灵活性。对于需要同时使用多种Web服务环境的组织或个人来说,这种方法具有较高的实用价值。

    本地机apache配置基于域名的虚拟主机

    在一台物理服务器上,可以设置多个独立的虚拟主机,每个虚拟主机对外表现为一个单独的网站,它们通过不同的域名来区分。Apache通过Host模块来实现这一功能。 1. **安装Apache** 在Windows系统中,你可以从Apache...

    apache 设置主机头,同一端口绑定多个域名和网站

    ### Apache配置主机头在同一端口绑定多个域名和网站 在Apache服务器中,有时我们需要在同一台服务器上运行多个网站,每个网站都有不同的域名。这可以通过配置虚拟主机(Virtual Hosts)来实现,其中一种方法是使用...

    IIS、TOMCAT和APACHE整合

    3. **配置虚拟主机**:在Apache或IIS中设置虚拟主机,以便根据域名或URL路径来区分和路由请求。 4. **安全考虑**:整合服务器时,需要特别注意安全性,确保所有服务器都已更新到最新版本,并配置了防火墙规则以防止...

    Apache+php5.4和IIS+php5.4环境下安装imagick

    **Apache+PHP5.4与IIS+PHP5.4环境下安装ImageMagick** ImageMagick是一款强大的开源图像处理库,它可以处理各种图像格式,包括创建、编辑、合成图像等。在Web服务器环境下,结合PHP5.4使用,可以实现动态生成图像、...

    Apache + PHP + MySql+ 虚拟主机 设置全功略

    在本文中,我们将详细介绍如何在Windows环境下设置Apache、PHP、MySQL以及虚拟主机的全过程。这是一个基础的Web服务器配置教程,特别适合初学者,旨在解决网络上其他教程可能存在的不足。 首先,我们要安装PHP。...

    不用 Apache 用 IIS + PHP + MySQL 配置php服务器

    在IT行业中,构建Web服务器是基础且至关重要的工作。通常,Apache HTTP Server是PHP和MySQL应用的首选,但并非...这种方法适用于那些习惯于Windows环境或者不想使用Apache的开发者。记得定期更新所有组件以确保安全性。

    Linux apache环境多域名配置

    ### Linux Apache环境多域名配置详解 #### 一、前言 在互联网开发中,单一服务器部署多个项目并分别对应不同的域名是一种常见的需求。这不仅能够提高服务器资源的利用率,还能帮助开发者更好地组织和管理不同类型...

    Apache设置二级域名的方法

    Apache设置二级域名的方法,可以帮助很好解决在Apache设置二级域名

    IIS和Apache的WEB服务能共存于一台服务器

    "IIS和Apache的WEB服务能共存于一台服务器" IIS和Apache是两种不同的Web服务器软件,IIS是Windows操作系统自带的组件,而Apache是开放源代码的Web服务器软件,常用在Unix系统,也有Windows平台的版本。在实际应用中...

    apache+iis+php全能配置

    Apache 和 IIS 都是流行的 Web 服务器软件,它们各自有着不同的优势,但在某些场景下,用户可能需要同时配置这两种服务器以实现特定的功能或者提供多种服务。本文将详细讲解如何在 Apache 和 IIS 上配置 PHP。 首先...

    让IIS支持Apache .htaccess 伪静态规则

    在IT行业中,Web服务器是网站运行的基础,其中两种常见的服务器软件是IIS(Internet Information Services)和Apache。IIS是微软公司推出的服务器解决方案,而Apache则是开源的HTTP服务器。这两种服务器在处理URL...

    IIS与Apache优缺点

    5. **.NET框架集成**:IIS 6.0与Windows Server 2003的组合特别适合于.NET应用程序,因为它们能完美集成,提供高效、稳定的.NET运行环境。 **IIS的缺点:** 1. **平台限制**:IIS只能运行在Windows平台上,这限制...

    Apache搭建虚拟主机(在本机起个假域名来访问php网站),可搭建许多个虚拟主机,假域名.zip

    Apache搭建虚拟主机(在本机起个假域名来访问php网站),可搭建许多个虚拟主机,假域名.zip

    apache端口占用问题解决办法

    ### Apache端口占用问题解决办法 #### 背景与问题描述 在Windows XP系统上安装Apache 2的过程中,可能会遇到端口占用的问题。具体表现为Apache无法绑定到指定的端口(例如80端口),这通常是由于其他服务或应用...

    一台服务器安装了APACHE,如何绑定多个域名和网站

    - **错误日志监控**:定期检查Apache的日志文件,以便及时发现并解决可能出现的问题。 通过以上步骤,你就可以成功地在一台Apache服务器上绑定多个域名,并为每个域名设置独立的网站内容了。这不仅提高了资源利用率...

    java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource解决方案

    总之,要解决`java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource`的问题,你需要确保你的项目正确包含了Apache Commons DBCP及其相关依赖,并正确配置了`BasicDataSource`。同时,了解...

Global site tag (gtag.js) - Google Analytics