Apache Proxying安装程序

我有一个情景如下:

我有一个DNS入口的url,例如http://example.com当用户inputhttp://example.com/portal ,他登陆Apache(2.2)Web服务器(比如AWS 1)。 在那里,我有一个虚拟主机条目代理请求到另一个Apachenetworking服务器(比如AWS 2)在局域网上运行,说IP 192.168.1.1使用反向代理。 然后, 192.168.1.1上的Apache Web服务器使用反向代理将请求转发到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文件(不是完整configuration)的片段:

 <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文件(不是完整configuration)的片段:

 <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> 

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

Redirect permanent不应引用内部IP,而是在浏览器中完成redirect的网站的完整实际URL:

Redirect子句中使用完整的站点URL,或使用mod_rewrite进行dynamicredirect。

使用此: ProxyPreserveHost On两个代理上。

从这个链接 :

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

此选项通常应closures。 它在像代理的基于群集名称的虚拟主机这样的特殊configuration中非常有用,其中原始主机头需要由后端服务器进行评估。

编辑 :啊,那么你有一个网关链接代理! 那么你也应该使用aws2上的ProxyVia On指令设置,或者在两个代理上使用。 试试看