Goal
Use Datameer in a HTTP configuration behind a reverse proxy or load balancer to offload the SSL traffic or to use wildcard certificates.
Learn
Because Datameer comes with Jetty as embedded webservice, follow the documentation under Proxy / Load Balancer Connection Configuration and Rewrite Handler.
Here are the necessary steps in detail:
1. Enter your Datameer installation directory.
2. Shut down Datameer service using bin/conductor.sh stop.
3. To check the current configuration execute java -jar start.jar --list-config:
$ java -jar start.jar --list-config
Java Environment:
-----------------
java.home = /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre
java.vm.vendor = Oracle Corporation
java.vm.version = 24.71-b01
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vm.info = mixed mode
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.7.0_71-b14
java.io.tmpdir = /var/folders/mf/kk3d6b7n1sd7py6jt7l5l0980000gn/T/
user.dir = /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
user.language = de
user.country = DE
Jetty Environment:
-----------------
jetty.version = 9.2.3.v20140905
jetty.home = /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
jetty.base = /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
Config Search Order:
--------------------
<command-line>
${jetty.base} -> /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
${jetty.home} -> /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
JVM Arguments:
--------------
(no jvm args specified)
System Properties:
------------------
(no system properties specified)
Properties:
-----------
http.timeout = 30000
jetty.dump.start = false
jetty.dump.stop = false
jetty.output.buffer.size = 32768
jetty.port = 8080
jetty.request.header.size = 8192
jetty.response.header.size = 8192
jetty.send.date.header = false
jetty.send.server.version = false
jsp-impl = apache
threads.max = 200
threads.min = 10
threads.timeout = 60000
Jetty Server Classpath:
-----------------------
Version Information on 26 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
changes to the --module=name command line options will be reflected here.
0: 9.2.3.v20140905 | ${jetty.base}/lib/apache-jsp/org.eclipse.jetty.apache-jsp-9.2.3.v20140905.jar
1: 3.8.2.v20130121-145325 | ${jetty.base}/lib/apache-jsp/org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar
2: 8.0.9 | ${jetty.base}/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.9.M3.jar
3: 2.3 | ${jetty.base}/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.9.M3.jar
4: 1.2.1 | ${jetty.base}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.1.jar
5: 1.2.1 | ${jetty.base}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.1.jar
6: 3.1.0 | ${jetty.base}/lib/servlet-api-3.1.jar
7: 3.1.0.M0 | ${jetty.base}/lib/jetty-schemas-3.1.jar
8: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-http-9.2.3.v20140905.jar
9: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-server-9.2.3.v20140905.jar
10: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-xml-9.2.3.v20140905.jar
11: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-util-9.2.3.v20140905.jar
12: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-io-9.2.3.v20140905.jar
13: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-jndi-9.2.3.v20140905.jar
14: 1.4.1.v201005082020 | ${jetty.base}/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar
15: 1.2 | ${jetty.base}/lib/jndi/javax.transaction-api-1.2.jar
16: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-security-9.2.3.v20140905.jar
17: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-servlet-9.2.3.v20140905.jar
18: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-servlets-9.2.3.v20140905.jar
19: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-webapp-9.2.3.v20140905.jar
20: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-deploy-9.2.3.v20140905.jar
21: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-plus-9.2.3.v20140905.jar
22: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-annotations-9.2.3.v20140905.jar
23: 5.0.1 | ${jetty.base}/lib/annotations/asm-5.0.1.jar
24: 5.0.1 | ${jetty.base}/lib/annotations/asm-commons-5.0.1.jar
25: 1.2 | ${jetty.base}/lib/annotations/javax.annotation-api-1.2.jar
Jetty Active XMLs:
------------------
${jetty.base}/etc/jetty.xml
${jetty.base}/etc/jetty-http.xml
${jetty.base}/etc/jetty-deploy.xml
${jetty.base}/etc/jetty-plus.xml
${jetty.base}/etc/jetty-annotations.xml
4. In the section called Jetty Active XMLs (which doesn't contain the jetty-rewrite.xml per default), include the rewrite module via java -jar start.jar --add-to-start=rewrite.
$ java -jar start.jar --add-to-start=rewrite
INFO: rewrite initialised in ${jetty.base}/start.ini (appended)
INFO: server initialised in ${jetty.base}/start.ini
INFO: server enabled in ${jetty.base}/start.ini
5. Execute java -jar start.jar --list-config to verify if the module is loaded.
$ java -jar start.jar --list-config
Java Environment:
-----------------
java.home = /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre
java.vm.vendor = Oracle Corporation
java.vm.version = 24.71-b01
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vm.info = mixed mode
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.7.0_71-b14
java.io.tmpdir = /var/folders/mf/kk3d6b7n1sd7py6jt7l5l0980000gn/T/
user.dir = /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
user.language = de
user.country = DE
Jetty Environment:
-----------------
jetty.version = 9.2.3.v20140905
jetty.home = /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
jetty.base = /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
Config Search Order:
--------------------
<command-line>
${jetty.base} -> /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
${jetty.home} -> /Users/<user>/Development/Datameer/Datameer-<version>-<cluster-dist>
JVM Arguments:
--------------
(no jvm args specified)
System Properties:
------------------
(no system properties specified)
Properties:
-----------
http.timeout = 30000
jetty.dump.start = false
jetty.dump.stop = false
jetty.output.buffer.size = 32768
jetty.port = 8080
jetty.request.header.size = 8192
jetty.response.header.size = 8192
jetty.send.date.header = false
jetty.send.server.version = false
jsp-impl = apache
threads.max = 200
threads.min = 10
threads.timeout = 60000
Jetty Server Classpath:
-----------------------
Version Information on 27 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
changes to the --module=name command line options will be reflected here.
0: 9.2.3.v20140905 | ${jetty.base}/lib/apache-jsp/org.eclipse.jetty.apache-jsp-9.2.3.v20140905.jar
1: 3.8.2.v20130121-145325 | ${jetty.base}/lib/apache-jsp/org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar
2: 8.0.9 | ${jetty.base}/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.9.M3.jar
3: 2.3 | ${jetty.base}/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.9.M3.jar
4: 1.2.1 | ${jetty.base}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.1.jar
5: 1.2.1 | ${jetty.base}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.1.jar
6: 3.1.0 | ${jetty.base}/lib/servlet-api-3.1.jar
7: 3.1.0.M0 | ${jetty.base}/lib/jetty-schemas-3.1.jar
8: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-http-9.2.3.v20140905.jar
9: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-server-9.2.3.v20140905.jar
10: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-xml-9.2.3.v20140905.jar
11: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-util-9.2.3.v20140905.jar
12: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-io-9.2.3.v20140905.jar
13: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-jndi-9.2.3.v20140905.jar
14: 1.4.1.v201005082020 | ${jetty.base}/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar
15: 1.2 | ${jetty.base}/lib/jndi/javax.transaction-api-1.2.jar
16: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-rewrite-9.2.3.v20140905.jar
17: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-security-9.2.3.v20140905.jar
18: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-servlet-9.2.3.v20140905.jar
19: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-servlets-9.2.3.v20140905.jar
20: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-webapp-9.2.3.v20140905.jar
21: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-deploy-9.2.3.v20140905.jar
22: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-plus-9.2.3.v20140905.jar
23: 9.2.3.v20140905 | ${jetty.base}/lib/jetty-annotations-9.2.3.v20140905.jar
24: 5.0.1 | ${jetty.base}/lib/annotations/asm-5.0.1.jar
25: 5.0.1 | ${jetty.base}/lib/annotations/asm-commons-5.0.1.jar
26: 1.2 | ${jetty.base}/lib/annotations/javax.annotation-api-1.2.jar
Jetty Active XMLs:
------------------
${jetty.base}/etc/jetty.xml
${jetty.base}/etc/jetty-http.xml
${jetty.base}/etc/jetty-rewrite.xml
${jetty.base}/etc/jetty-deploy.xml
${jetty.base}/etc/jetty-plus.xml
${jetty.base}/etc/jetty-annotations.xml
6. Edit the file etc/jetty.xml and uncomment the ForwardedRequestCustomizer.
7. Edit etc/jetty-rewrite.xml and add the following rewrite rule:
<Ref refid="Rewrite">
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.ForwardedSchemeHeaderRule">
<Set name="header">X-Forwarded-Proto</Set>
<Set name="headerValue">https</Set>
<Set name="scheme">https</Set>
</New>
</Arg>
</Call>
</Ref>
8. Edit conf/default.properties and define the port to redirect the call to in port.mapping.https.
9. Start Datameer service by using bin/conductor.sh start.
10. Test the correct redirection using curl --verbose --header "X-Forwarded-Proto: https" 'http://localhost:8080'.
* Adding handle: conn: 0x7ffd42003a00 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0x7ffd42003a00) send_pipe: 1, recv_pipe: 0 * About to connect() to localhost port 8080 (#0) * Trying ::1... * Connected to localhost (::1) port 8080 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.30.0 > Host: localhost:8080 > Accept: */* > X-Forwarded-Proto: https > < HTTP/1.1 302 Found < X-Frame-Options: SAMEORIGIN < Set-Cookie: DAPSESSIONID=<id>;Path=/;Secure;HttpOnly < Expires: Thu, 01 Jan 1970 00:00:00 GMT < Location: https://localhost:8443/login < Content-Length: 0 < * Connection #0 to host localhost left intact
Further Information
You will find further information under Managing Startup Modules.
Comments
0 comments
Please sign in to leave a comment.