阿帕奇、节点、.htaccess
Apache, Node, .htaccess
我有一个侦听端口 80 的 apache 网络服务器。使用 apache,一个基于 Zend 框架的 PHP/MySQL 系统。而且我还有一个节点服务器监听端口 3000.
当客户端发送请求时,总是在端口 80 上,因此首先由 apache 处理。我想在处理请求之前应用以下规则:
if content-type is "application/json" then
use apache web server
else if content-type is "application/zend" then
use apache web server
else
use node server
这里content-type是在请求头中发送的。 Content-type "application/zend" 是一种自定义内容类型,表示对于此类特定请求,我们不想使用节点服务器(出于某些原因我需要它)。
我试过用
修改httpd-vhosts.conf
ProxyPreserveHost on
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
但这当然是不够的,因为并不是所有的事情都应该由节点服务器处理(监听端口 3000)。因此,应该添加一些规则。但我不确定 where/how。我也尝试更改 .htaccess 文件,但不确定如何更改。
任何帮助都会很棒!谢谢!
这应该有效(在 .conf
文件中):
RewriteEngine on
RewriteCond %{HTTP:Content-type} !=application/json
RewriteCond %{HTTP:Content-type} !=application/zend
RewriteRule ^ http://%{HTTP_HOST}:3000%{REQUEST_URI} [P]
请记住,这可能会带来性能损失,如果您的大部分请求都在节点上结束,我们或许应该寻找更好的解决方案。
我有一个侦听端口 80 的 apache 网络服务器。使用 apache,一个基于 Zend 框架的 PHP/MySQL 系统。而且我还有一个节点服务器监听端口 3000.
当客户端发送请求时,总是在端口 80 上,因此首先由 apache 处理。我想在处理请求之前应用以下规则:
if content-type is "application/json" then
use apache web server
else if content-type is "application/zend" then
use apache web server
else
use node server
这里content-type是在请求头中发送的。 Content-type "application/zend" 是一种自定义内容类型,表示对于此类特定请求,我们不想使用节点服务器(出于某些原因我需要它)。
我试过用
修改httpd-vhosts.confProxyPreserveHost on
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
但这当然是不够的,因为并不是所有的事情都应该由节点服务器处理(监听端口 3000)。因此,应该添加一些规则。但我不确定 where/how。我也尝试更改 .htaccess 文件,但不确定如何更改。
任何帮助都会很棒!谢谢!
这应该有效(在 .conf
文件中):
RewriteEngine on
RewriteCond %{HTTP:Content-type} !=application/json
RewriteCond %{HTTP:Content-type} !=application/zend
RewriteRule ^ http://%{HTTP_HOST}:3000%{REQUEST_URI} [P]
请记住,这可能会带来性能损失,如果您的大部分请求都在节点上结束,我们或许应该寻找更好的解决方案。