如何在 Apache 上使用 Proxypass?

如何在 Apache 上使用 Proxypass?

我在 Google 上搜索过,没有找到任何关于为 proxypass 配置 apache 的指令。

我确实找到了无需等待 DNS 传播即可将域名转换到新的 Web 主机但我不明白他们在说什么,尤其是以下内容:

1)如何启用代理、proxy_http 和重写模块

2)在哪里可以找到 apache 配置文件和此行?

RewriteEngine on 
ProxyPassReverse   /      http://<your-fqdn-here>/
ProxyPass          /      http://<your-fqdn-here>/

我的意思是您能指导我配置 ProxyPass 吗?

更新

我在 centOS Apache 版本上运行:

Server version: Apache/2.2.22 (Unix)
Server built:   Feb 10 2012 16:45:29
Cpanel::Easy::Apache v3.9.1 rev9999

我尝试按照本教程安装代理模块http://www.hackersgarage.com/install-mod_proxy-apache-module-on-whmcpanel-ceentos-linux-server.html

但是我得到了这个错误:

./configure --enable-mods-shared="proxy proxy_http proxy_connect"
-bash: ./configure: /bin/sh: bad interpreter: Permission denied

所以我忽略了它并继续执行其余命令。当我尝试重新启动 Apache 时:

root@db [/tmp/httpd-2.2.22]# /etc/init.d/httpd restart  
httpd: Syntax error on line 36 of /usr/local/apache/conf/httpd.conf: module proxy_module is built-in and can't be loaded

只需将其添加到 httpd.conf 即可生效

< VirtualHost *:80 >
   ServerName domain.com
ServerAlias www.domain.com

< IfModule mod_proxy.c > ProxyPass / http://www.newdomain.com/ ProxyPassReverse / http://www.newdomain.com/ </IfModule><VirtualHost>

答案1

看看这个:

http://library.linode.com/web-servers/apache/proxy-configuration/multiple-webservers-proxypass-centos-5

它适用于 CentOS5,但 CentOS6 将具有类似的配置,因为 Apache 没有发生重大变化。

基本上,您不应该尝试编译 mod_proxy。CentOS 的 httpd 服务器已经将其作为编译模块。您只需使用上述文档激活代理指令即可。因此,您应该撤消编译模块时所做的任何更改。

答案2

我将根据您提供的信息尽力解答您的问题。

首先,关于启用模块,这将因发行版而异。例如,在 RHEL/CentOS 上,重写和代理模块包含在基本 httpd 包中,您不需要做任何其他事情。

相比之下,在 Debian 上,您需要将配置文件从 mods-available 符号链接到 mods-enabled。有一个名为的工具a2enmod可以帮助您完成此操作,例如:

a2enmod proxy
a2enmod rewrite

如果您使用的是 Debian,则应该通过查看配置文件来查看可以启用哪些模块/etc/apache2/mods-available/。我相信 Ubuntu Server 完全一样。

至于第 2 点,您可以将代理配置放在<VirtualHost>要代理的声明中。这同样会因发行版或偏好而异。大多数 RHEL/CentOS 系统都鼓励my-website.com.conf在 中使用站点特定文件/etc/httpd/conf.d/。Debian 用户应将文件放在 中/etc/apache2/sites-enabled/(或 中sites-available,并使用 创建符号链接a2ensite)。有关这些辅助工具的完整指南可在此处找到这里

相关内容