Apache 代理设置

Apache 代理设置

我有如下场景:

我有一个带有 DNS 条目的 URL,例如http://example.com 当用户输入时http://example.com/portal,他/她将登陆 Apache (2.2) Web 服务器(例如 AWS 1)。在那里我有一个 VirtualHost 条目,它使用反向代理将请求代理到在 LAN 上运行的另一个 Apache Web 服务器(例如 AWS 2),例如 IP 192.168.1.1。然后,Apache Web 服务器使用反向代理192.168.1.1将请求转发到 JBoss 应用程序服务器。

这样做时,结果页面的 URL 将更改为 LAN IP https:\\192.168.1.2\portal

我希望原始 URL 是完整的,因为外部用户的系统不知道它192.168.1.2是什么。

这是我的第一个问题。如果我的解释不够清楚,请多包涵。

以下是来自 AWS 1 的 vhost 文件片段:

<VirtualHost 192.168.10.179:80>
  ServerAdmin [email protected]
  DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
  ServerName example
  ServerAlias example
  ErrorLog "logs/example-error.log"

  # use always https
  Redirect pernament / https://example.com/
</VirtualHost>

以下是 AWS 1 的 ssl 文件的片段(它不是完整的配置):

<VirtualHost 192.168.10.179:443>
  ServerAdmin [email protected]
  DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
  ServerName example
  ServerAlias example
  ErrorLog "logs/example-ssl-error.log"

  ProxyRequests Off
  ProxyPreserveHost On

  ProxyPass / http://192.168.1.1/
  ProxyPassReverse / http://192.168.1.1/
</VirtualHost>

以下是AWS 2的vhost文件的代码片段:

<VirtualHost 192.168.1.1:80>
  ServerAdmin [email protected]
  DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
  ServerName aws2
  ServerAlias aws2
  ErrorLog "logs/aws2.log"

  # use always https
  Redirect pernament / https://192.168.1.1/
</VirtualHost>

以下是 AWS 2 的 ssl 文件的片段(它不是完整的配置):

<VirtualHost 192.168.1.1:443>
ServerAdmin [email protected]
DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
ServerName aws2
ServerAlias aws2
ErrorLog "logs/aws2-ssl-error.log"

ProxyRequests Off
ProxyPreserveHost On

ProxyPass / http://192.168.1.2/   #This is where JBoss is running
ProxyPassReverse / http://192.168.1.2/
</VirtualHost>

答案1

当您在 AWS2 上启用了 https:// 时,为什么还要从 AWS1 重定向到 http:// 到 AWS2?请将 AWS1 中的 ProxyPass 和 ProxyReverse 设置更改为 https://。

答案2

不应Redirect permanent引用内部 IP,而应引用站点的完整实际 URL,因为重定向是在浏览器中完成的:

在子句中使用完整的站点 URLRedirect或使用 mod_rewrite 进行动态重定向。

答案3

ProxyPreserveHost On在两个代理上都使用这个:

此链接

“启用后,此选项将把传入请求的 Host: 行传递到代理主机,而不是 ProxyPass 行中指定的主机名。

此选项通常应关闭。它在特殊配置(如基于代理批量名称的虚拟主机)中非常有用,其中原始主机标头需要由后端服务器评估。

编辑:啊,那么您已经将代理与网关链接起来了!那么您还应该ProxyVia On在 aws2 上使用指令设置,或者在两个代理上都使用指令设置。试试看。

相关内容