How do I configure nginx as proxy to jetty?
How to configure nginx to work with a java server. In the example Jetty is used.
Edit /etc/nginx/sites-available/hostname
:
server { listen 80; server_name hostname.com; location / { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; }}
Consider disabling external access to port 8080:
/sbin/iptables -A INPUT -p tcp -i eth0 --dport 8080 -j REJECT --reject-with tcp-reset
An example Jetty configuration (jetty.xml
) might resemble:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd"><!-- | http://eclipse.org/jetty/documentation/current/configuring-connectors.html +--><Configure id="Server" class="org.eclipse.jetty.server.Server"> <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> <Set name="secureScheme">https</Set> <Set name="securePort"><Property name="jetty.tls.port" default="8443" /></Set> <Set name="outputBufferSize">65536</Set> <Set name="requestHeaderSize">8192</Set> <Set name="responseHeaderSize">8192</Set> </New> <Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.ServerConnector"> <Arg name="server"><Ref refid="Server" /></Arg> <Arg name="acceptors" type="int"><Property name="http.acceptors" default="-1"/></Arg> <Arg name="selectors" type="int"><Property name="http.selectors" default="-1"/></Arg> <Arg name="factories"> <Array type="org.eclipse.jetty.server.ConnectionFactory"> <Item> <New class="org.eclipse.jetty.server.HttpConnectionFactory"> <Arg name="config"><Ref refid="httpConfig" /></Arg> </New> </Item> </Array> </Arg> <Set name="host"><Property name="jetty.host" default="localhost" /></Set> <Set name="port"><Property name="jetty.port" default="8080" /></Set> </New> </Arg> </Call></Configure>
This will cause Jetty to listen on localhost:8080 and nginx to redirect requests from domain.com:80 to the Jetty server.