Iptables 和 NAT 保留原始目标 IP?

Iptables 和 NAT 保留原始目标 IP?

我有一台面向 Web 的服务器,我已将其拆分成多个客户机,其中一个运行 Apache,并带有一些非常基本的虚拟主机配置。我已启用重定向,但我的虚拟主机配置需要原始目标来确定请求应命中哪组页面,因此我只看到默认服务器页面。

目前,我的 iptables 规则如下:

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.10.2:80

有什么指点吗?

问题是,任何到此框的 http(s) 流量都被路由到默认页面集,而不是适合最初请求的域的页面。

虚拟主机配置中的相应部分:

    #
    #  The document root + CGI-directories.
    #
    VirtualDocumentRoot     /srv/%0/public/htdocs/
    VirtualScriptAlias      /srv/%0/public/cgi-bin/

(是的,这些路径确实存在 - 我已经从我正在替换的 apache 框中拉出了 /srv/,并保留了所有者/权限/等等!)

答案1

对于虚拟主机,Apache 不使用服务器的 IP 地址(除非使用基于 IP 的虚拟主机,我猜您不是)来确定要显示哪个网站,因此检查 IPtables 规则不会产生任何结果。相反,Apache 会检查 http 请求中的主机字段,并使用它来决定要显示哪个虚拟主机。很可能是您的 Apache 配置有问题,而不是 IPtables。

编辑您的问题以包含您的虚拟主机配置块。

相关内容