代理基于名称的虚拟主机的最简单方法

代理基于名称的虚拟主机的最简单方法

现在我正在使用以下 Apache 指令将主机名映射到端口号:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName local.stardust-game.com
    ProxyPass / http://127.0.0.1:5555/ retry=0
</VirtualHost>

<VirtualHost *:80>
    ServerName local.wdi-toolbelt.com
    ProxyPass / http://127.0.0.1:9992/ retry=0
</VirtualHost>

(在我的开发机器上,local.*域名设置127.0.0.1在我的主机文件中。)

我只是正在寻找一种方便的方法来运行多个任意来源的应用程序(一些是 Ruby,一些是 Python 等),这些应用程序可以通过端口 80 访问,但使用不同的主机名。

Apache 似乎有点过度,我想验证一下我的直觉,是否有更简单的方法可以做到这一点。

我猜解决方案必须需要检查Host所有传入请求的标头,因为没有它就无法知道请求的目的是什么,但同样,让 Apache 运行感觉有点小题大做只是执行此请求转发。我实际上没有将它用于其他任何用途 - 只是将请求代理到在同一台机器上运行的不同进程。

  • 是否有nginx更轻量级或更易于配置的解决方案?
  • 出于开发目的,是否有令人信服的理由不编写一个小型 C/Ruby/Python 脚本来实现这一点?(我认为这样的东西已经存在,只是我不知道它叫什么。“虚拟代理主机多路复用”?)
  • 在舞台/制作中使用这样的脚本会不会很愚蠢?
  • 有没有办法可以做到这一点或类似的事情而不需要检查Host标题?

答案1

如果您使用它在流量较低的本地网络上进行测试,那么设置 nginx 不会给您带来太多好处,尽管 nginx 比 Apache 更高效。

如果您使用 Apache,您可能需要添加 ProxyPassReverse 指令。

https://stackoverflow.com/questions/8137861/do-i-need-to-use-proxypassreverse-if-im-using-mod-rewrite

站在您的立场上,我不会在代理上花费太多时间。您可能过度优化了,而您的时间可以更好地用于开发应用程序。Apache 是一个完全可以接受的解决方案,但您可以考虑 nginx 或专用代理,例如 pound。

http://www.unixmen.com/pen-a-pound-2-great-opensource-server-load-balancing-tools-for-linux/

https://calomel.org/pound.html

相关内容