#31 closed enhancement (fixed)
Alias support for proxy url
Reported by: | adube | Owned by: | adube |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | server | Version: | 0.7 |
Keywords: | proxy, alias, url | Cc: | adube@…, jlacroix |
Description
description
Browsers can only send 4 requests to a same server at a time. An easy way to bypass this limitation is to use aliases. In GeoPrisma, every request goes to the proxy first so there's only and always on point access to every services and it's via the proxy.
issue
Currently, in GeoPrisma, there's only one url for the proxy.
solution
Have as many as we want. We could :
- have a new "addProxyURL" function to add the url to an array
- change "setProxyURL" to use "addProxyURL" and use the array
- change "getProxyURL" to return only the first element of the proxy array (for backward compatibility"
- hav a new "getProxyURLs" function to return all urls
Attachments (2)
Change History (12)
by , 15 years ago
Attachment: | patch-GeoPrisma-31-r736-A0.diff added |
---|
comment:1 by , 15 years ago
comment:2 by , 15 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
by , 15 years ago
Attachment: | patch-GeoPrisma-31-r736-A1.diff added |
---|
comment:3 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
The lastest patch passed the php code sniffer tests with 0 errors and was committed : r737 . The documentation of this new feature should appear in the "Optimization" incoming topic soon.
comment:4 by , 14 years ago
Subdomains should be specifyable as a conifg option in the service so as to mimick http://trac.osgeo.org/openlayers/wiki/OpenLayersOptimization#multipleURLs. I am not reopening the point at this point. Only when we are ready to do something about the problem.
follow-up: 6 comment:5 by , 14 years ago
Let me explain the original problem in more details :
A browser can only send 4 request to a single host at a time. In a OpenLayers application, you can bypass this issue by specifying aliases for hosts used to access the layers.
In GeoPrisma, the only point of entry is proxy.php. Service hosts are not available and are never used by the browser directly. Each layer point to the proxy, which is responsible of creating the request with the original host on the back-end. So, having multiple service aliases wouldn't make any difference since they would all be accessed by proxy.php anyway. So, that means that whether the number of different services or aliases you have, they all go through the proxy first so there can be only 4 at a time.
The patch committed in this ticket fixed that issue by enabling proxy aliases, so that you can have more than 4 requests sent the proxy at a time.
Are the explanations clear ?
comment:6 by , 14 years ago
Right. I looked at the patch more closely and now I see the proxy url array passed to the OL constructor for WMS and TC objects. But wouldn't there be a way to fill the
$objArrayGeoPrismaProxyURLAliases = array();
in a for loop that would get it's values from something like
<wms> ... <source> http://sub1.biz.com/fcgi-bin/mapserv...,http://sub2.biz.com/fcgi-bin/mapserv...,"..." </source> </wms>
in the configuration file ?
Do I understand the current implementation hardcodes the proxy urls so that needs to be modified per GP installation ? Do I also understand the proxy urls are used for all WMS and TC services ? That is, I can't parallel proxy requests to "real" service urls e.g.
<wms> <name>Local WMS</name> <source> http://sub1.biz.com/fcgi-bin/mapserv...,http://sub2.biz.com/fcgi-bin/mapserv...,"..." </source> </wms>
<wms> <name>External WMS</name> <source> "http://labs.metacarta.com/wms-c/Basic.py","http://monitor.metacarta.com/wms-c/Basic.py" </source> </wms>
That is, do I understand all I can do for now is use one source url with many proxy urls (proxy requests parallelized)? Why not one proxy request to many service urls (service requests parallelized) or many proxy urls to many service urls (proxy and service requests parallelized) ?
There must be something I don't get.
follow-up: 9 comment:7 by , 14 years ago
proxy.php is not a browser so it doesn't suffer from the "maximum 2 parallel connection" limitation. There would not be any performance gain from specifying multiple service sources. They are just aliases of the same machine. However we must specify multiple proxy aliases to get rid of the "maximum 2 parallel connection" limitation we have on the proxy.php.
In short, you only need one source url with many proxy urls. There would be no gain to do it the other way.
comment:8 by , 14 years ago
Cc: | added |
---|
comment:9 by , 14 years ago
Thanx for the explanation. But wouldn't still be useful to mention the proxy urls in the config file since they depend on installation-specific domain manipulation ?
Something like :
<wms>
<name>Local WMS</name>
<source>http:/biz.com/fcgi-bin/mapserv...</source>
</wms>
<proxyurls>
<source>http://www2.myserver.com/, http://www3.myserver.com/</source>
</proxyurls>
and those would be appended with the '/proxy.php' string ?
I'm just trying to figure out how those urls could be stated elsewhere than in php code but maybe it's fine to hardcode things on every installation.
comment:10 by , 14 years ago
You have to modify your Apache configuration to enable that. It's not really a configuration specific setting, but I agree that it's not a index.php specific setting either. Maybe we could put that in the <application> tag in the new PGSQL config. Or in the <layout> tag. Maybe different layout or application will use different aliases.
With the patch, a new "setter" is now available : setProxyURLAliases. The use of setProxyURL is still mandatory and must be the same servername as the application :
The aliases are used by the WMS and TileCache service types only.