这是场景:
我有一个只能通过一个url访问的linux服务器(因为服务器是虚拟机中的虚拟机):
url: http : //foo.bar.com
我有几个networking应用程序可以这样访问:
foo.bar.com/java_app =>安装在tomcat中的java wep应用程序
foo.bar.com/webpage =>安装在apache服务器上的网页
注意:myhost => localhost
ProxyPreserverHost On <VirtualHost *:80> ServerName foo.bar.com DocumentRoot /var/www/webpage JkMountCopy On SSLProxyEngine On ProxyPass /java_app http://myhost:8080/java_app ProxyPassReseverse /java_app http://myhost:8080/java_app #This uses the DocumentRoot ProxyPass /webpage http://myhost:80/ ProxyPassReseverse /webpage http://myhost:80/ </VirtualHost>
问题是我有另外一个node.js里的软件可以通过这个URL访问:
https://myhost:8061. (a webpage too).
解决scheme可能是添加这些行:
ProxyPass /ssl_app https://myhost:8061/ ProxyPassReseverse /ssl_app https://myhost:8061/
但是这个失败了。 问题是,网页(JS,CSS,其他文件)的文件(来源)没有正确加载,相应的Web应用程序也是如此。 (火狐)
例如在“foo.bar.com/ssl_app”里面,我可以看到源代码的URL,这些必须是这样的:
foo.bar.com/ssl_app/js/one.js foo.bar.com/ssl_app/js/two.js foo.bar.com/ssl_app/css/css.js
不过我这样获得:
foo.bar.com/js/one.js foo.bar.com/js/two.js foo.bar.com/css/css.js
(redirectfoo.bar.com/ssl_app => foo.bar.com/)
显然,networking应用程序不起作用。
因此,如果我直接把foo.bar.com/css/css.js文件显示正确。
日志详情:
*** File does not exist: /var/www/webpage/lib, refere http://foo.bar.com/ssl_app
我认为这是为DocumentRoot(/ var / www / webpage /),但我怎样才能创build一个新的VirtualHost具有相同的ServerName?
任何人都可以说我能看到在Apacheconfiguration?
谢谢。
您似乎认为ProxyPassReverse也会修改后端提供的内容中的URL。 这是不正确的。 ProxyPassReverse将仅在您的后端服务器(您的“ssl_app”)发送redirect时使用。 内容本身没有感动。
你有几个select:
您可能需要启用
SSLProxyEngine On
通过HTTP请求代理SSL。
请参阅: 使用SSL的Apache ProxyPass
问题是我的“ssl_app”是一个使用websockets的web应用程序。 Apache不支持networking套接字,所以我需要search一种方式来“redirect”与WebSockets(与https://github.com/kawasima/mod_proxy_websocket )的应用程序或更改与Nginx的HTTP服务器(Nginx兼容WebSockets )。