使用反向代理问题

之前写了函数如下:

public static String buildUrl(String strHost, String strContext, String argAbsolutePath)
	{
		if (!argAbsolutePath.startsWith("/"))
		{
			argAbsolutePath = "/" + argAbsolutePath;
		}
		return MessageFormat.format("http://{0}{1}{2}", new Object[] { strHost, strContext, argAbsolutePath });
	}

什么意思大家应该懂,以前一直都没问题,现在用上反向代理后,就出问题了。

从请求头获得的host居然是相对于反向代理服务器的地址。

使用的是apache,发现可以通过设置ProxyPreserveHost 为On来不改变原始host值。

当然即使不开ProxyPreserveHost 选项apache也会加个X-Forwarded-Host来获得原始host,不过这个头不是标准http头。

这样的话还是有问题的,你只获得了host还有后面的原始context部分怎么得呢?

这就要求使用相对定位来安排资源。


Total views.

© 2013 - 2018. All rights reserved.

Powered by Hydejack v6.6.1