SSL configuration in Java/Tomcat being what it is, I configured a tomcat6 instance to get requests from an nginx reverse proxy handling the SSL, proxying connections to localhost:8080. Adding headers like X-Forwarded-For ensures the endpoints show up with the right address, but not with the right protocol. A client (in my case python-suds) retrieves the WSDL just fine, but finds the following locations for SOAP ports:
<wsdl:service name="WebService">
<wsdl:port name="WebServiceHttpSoap11Endpoint" binding="ns:WebServiceSoap11Binding">
<soap:address location="http://10.10.3.96/axis2/services/WebService.WebServiceHttpSoap11Endpoint/"/>
</wsdl:port>
<wsdl:port name="WebServiceHttpSoap12Endpoint" binding="ns:WebServiceSoap12Binding">
<soap12:address location="http://10.10.3.96/axis2/services/WebService.WebServiceHttpSoap12Endpoint/"/>
</wsdl:port>
<wsdl:port name="WebServiceHttpEndpoint" binding="ns:WebServiceHttpBinding">
<http:address location="http://10.10.3.96/axis2/services/WebService.WebServiceHttpEndpoint/"/>
</wsdl:port>
</wsdl:service>
I suspect its the http:// that throws it off, as trying to use this results in a fault and the following message in tomcat’s log:
org.apache.axis2.AxisFault: The endpoint reference (EPR) for the Operation not found is /axis2/services/WebService.WebServiceHttpSoap11Endpoint/ and the WSA Action = null. If this EPR was previously reachable, please contact the server administrator.
Is there a way (in axis2 or nginx) to configure this to make this work? I can’t seem to find a way to convince axis2 to generate the location of its endpoint to include https://.
Well, long googling hours finally yielded a result: adding an (as far as I can see) undocumented configuration parameter to the global
axis2.xmlconfig file generates the right working end point urls:<parameter name="httpFrontendHostUrl">https://10.10.3.96/axis2/</parameter>