我在Linux(Ubuntu)上启动并运行apache2上的反向代理。 现在我看到在Windows下有一个不同的文件夹结构。 我的Linuxconfiguration文件不能在Windows下工作,或者我错了吗?
请告诉我方式
正如约翰所暗示的那样,安装在Windows上的Apache的默认configuration是在一个平面文件中的Program Files\Apache2.2\httpd.conf中。 path可能有些不同,因为我目前没有Windows机器。 大多数Linux发行版都有自己的自定义分层结构,看上去如下所示。 这个例子来自Debian,可能会因其他发行版本而异。
/etc/apache2/
apache2.conf 程序包提供的configuration conf.d/
httpd.conf 本地configuration文件。 覆盖apache2.conf的内容 mods-available/
mods-enabled/
mods-available文件。 使用a2enmod和a2dismod创build/删除链接。 创build链接将启用给定的模块。 ports.conf 启用的端口 sites-available/
VirtualHost风格的configuration文件 sites-enabled
sites-available文件sites-available 。 链接用a2ensite和a2dissite创build/删除。 创build一个链接将启用给定的网站。 我已经描述了所有这些,希望能够更容易理解如何在Windows下进行复制。 除了在Windows下不支持链接(在Vista / Server 2008 / Windows 7中有这个改变)之外,设置这个结构相对容易。 但是你必须手动完成,因为默认的configuration不适合你。 确保您调整以下内容以匹配您正在从中迁移的Linux发行版。
假设Windows上的原始configuration文件位于\Program Files\Apache2.2\httpd.conf (同样,这可能不是正确的位置,我需要检查一台Windows机器),请创build以下目录:
\Program Files\Apache2.2\conf.d\ \Program Files\Apache2.2\sites-enabled\ 您不需要sites-available目录,因为Windows不支持链接。 你可以添加他们,但是事情不会一样的。 另外,我build议把模块configuration放到httpd.conf文件中。 由于它们不是由软件包pipe理器pipe理的,所以将它们放在一个地方会更容易。
从Linux的httpd.conf文件进行任何修改到Windows文件。 如果你在Linux下有一个apache2.conf文件,这很容易,因为httpd.conf只会覆盖apache2.conf 。
如果需要,添加一个ports.conf文件。 这个内容也可以存在于httpd.conf文件中。
将Linux conf.d目录中存在的文件复制到Windows目录中。 确保文件名以.conf结尾,如果之前没有添加。 这样做是为了帮助使目录parsing(设置在下面)更less的错误。
将sites-enabled Linux sites-enabled目录中存在的文件复制到Windows目录中。 如步骤4,确保文件名以.conf结尾,如果在Linux下不存在,则添加它。
将以下内容添加到httpd.conf文件的末尾:
# If you added a ports.conf file, add the following Include ports.conf # Include the conf.d files Include conf.d/*.conf # Include the enabled sites Include sites-enabled/*.conf
重新启动Apache。 确保您检查并更正任何configuration错误。
这可能不会让你100%,但它应该让你接近。
有什么理由不能在Windows下创build与Linux下相同的文件夹结构? 你不能指望只安装Apache,并魔法般地创build一个不属于它的默认configuration的文件夹树。 创build相同的结构,复制configuration并在适当的地方进行编辑。
现在我已经find了以下解决scheme :
NameVirtualHost *:80 <VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> # der Adresse http://>servername</crm wird hier wie folgt umgeleitet ProxyPass /crm http://localhost:8080/crm ProxyPassReverse /crm http://localhost:8080/crm # der Adresse http://>servername</trac wird hier wie folgt umgeleitet ProxyPass /trac http://localhost:8000/trac ProxyPassReverse /trac http://localhost:8000/trac </VirtualHost>
这转到C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ conf \ extra \ httpd-vhosts.conf
如果你知道把参数放在哪里,这是非常简单的,因为标准安装后的标准文件夹结构对于ubuntu 8.04和windows2008上的apache2.2是不同的。
和平
冰