James Rowe created FINERACT-36:
----------------------------------

             Summary: User defined Templates do not work when Tomcat is behind 
a proxy
                 Key: FINERACT-36
                 URL: https://issues.apache.org/jira/browse/FINERACT-36
             Project: Apache Fineract
          Issue Type: Bug
          Components: System
         Environment: Linux, Nginx that proxy passes to Tomcat, OpenJDK7
            Reporter: James Rowe
            Assignee: Markus Geiss


Related to https://mifosforge.jira.com/browse/MIFOSX-2322 This issue was raised 
by our client and the fix provided did not actually resolve the root issue. As 
mentioned in the Environment section, our server is a multitenant server and 
has Nginx set up to proxy requests to Tomcat. Because of this setup though, 
User defined templates do not work. Looking through the code 
(https://github.com/openMF/mifosx/blob/develop/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeService.java)
 I have found out that the TemplateMergeService uses the HTTP API to return the 
results for the templates. The issue is it tries to connect to the wrong port 
and with the wrong tenant. The tomcat server is running on port 8008 and 8443 
and the template merge service attempts to connect on port 80/433. Nginx will 
receive the request and ignore them because of how my routing rules are set up. 
Our server is setup to give a subdomain to each tenant and nginx uses this 
subdomain name to set the Fineract-Platform-Id header on the request. Because 
the API tries to connect on localhost (without any subdomain), the requests 
made from the API to the API fail to connect. It doesn't really matter in the 
end, since the service grabs the wrong tenant information. I'm not sure where 
it gets the tenant identifier from, but it chose "default" as the tenant when 
it should have used the name of our client instead. (As a precaution, our 
default tenant is a completely empty tenant)

In summary, the TemplateMergeService attempts to make calls to the API, but 
fails to ascertain the correct settings to connect to the API. It fails to 
choose the correct tenant identifier (uses default, when that is not correct), 
connects on the wrong port (80 instead of 8008), and doesn't use the right 
server name for the port it connects to. The last two issues are very related 
as a proper fix would be to either change the port or change the server name. I 
hope this is enough information to write a fix, but if you need any more 
information let me know. I'll be glad to help however I can.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to