我正在尝试掌握 Apache 中的反向代理功能。我在 Windows Server 2012 上使用 Bitnami RubyStack。以下配置使 Apache 甚至无法启动 - error.log 似乎对出现的问题没有任何帮助。
<VirtualHost *:80>
ServerName mydomain.nl
ServerAlias mysub.mydomain.nl
# this is a Rails application
DocumentRoot "C:/Bitnami/rubystack-2.0.0-17/projects/dummy"
RewriteEngine On
<Proxy balancer://thinservers>
BalancerMember http://127.0.0.1:3001
</Proxy>
# Redirect all non-static requests to thin
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://thinservers%{REQUEST_URI} [P,QSA,L]
# Custom log file locations
ErrorLog "C:/Bitnami/rubystack-2.0.0-17/projects/dummy/log/error.log"
CustomLog "C:/Bitnami/rubystack-2.0.0-17/projects/dummy/log/access.log"
</VirtualHost>
我想要实现的是将端口 80 上的传入请求转发到 3001。但是我认为可能存在问题,因为 Bitnami 文档根目录也已配置。
我对 Apache 不是很熟悉。我已经包含了我需要的代理功能的模块。只要我不包含 vhost,Apache 就可以正常启动。但是,我不知道 Rewriting 和 BalanceMember 应该做什么。
编辑:经过一些权限检查后,我启动了 Apache,但是在访问端口 80 时出现内部服务器错误。
对于 URL /,没有有效的协议处理程序。如果您使用的是 mod_proxy 的 DSO 版本,请确保使用 LoadModule 将代理子模块包含在配置中。
答案1
经过一番挖掘,我发现了一些类似的方法。我发现了一些晦涩难懂的教程,甚至 Apache 文档部分中的链接也很差。因此,对于每个真正不关心 Apache 细节,但只希望他们的 Rails 应用程序在 Bitnami Rubystack 上使用反向代理的人来说,这是一个不错的选择。
将 vhosts 包含在主配置文件 (httpd-conf) 中,在 extra/vhosts.conf 中添加自定义 vhost 条目
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "YOUR_BITNAMI_INSTALL_DIR/rubystack-2.0.0-17/projects/dummy/public"
ServerName your-subdomain.domain.com
ProxyPass / http://localhost:3001/
ProxyPassReverse / http://localhost:3001/
</VirtualHost>
完美完成这个技巧!