Ognjen Blagojevic wrote:
André,

On 15.5.2013 15:38, André Warnier wrote:
As far as I understand here, we are not talking about a proxy situation,
we are talking about Iptables, which does not proxy, it just modifies
packets.
So the URL that Tomcat gets from the 1st request line does not contain a
hostname[:port}.

According to RFC2616 (Section 5.1.2), client may send absolute URI or absolute path. Majority of clients will send absolute path when talking to the server.

Absolute *path*, yes. They MUST do that if they are talking to "this" server.

But HTTP 1.1 clients will only send an absolute URI (including hotsname[:port] when talking to a proxy.

In this case we are not in a proxy situation, so the request line will not contain http://hotsname[:port].




But yes, the Host header will contain a port, if different from the
default 80.

Right.


So is that where Tomcat picks it up here, despite receiving the request
on the (different) port of the Connector ?

Yes. You may take a look at AbstractHttp11Processor.parseHost(MessageBytes). If the host header is not set (e.g. client uses HTTP 1.0), Tomcat will set port to the one read from endpoint configuration. If the client uses HTTP 1.1, where host header is mandatory, Tomcat will read host header. If there is a port specified in the value of the host header it will be read. If there is no port specified in the host header that Tomcat will assume port 80 for HTTP and port 443 for HTTPS.

Yes, that it will be read seems normal.
But that it would be logged as the port on which the request was received, seems a bit less intuitive.
But if that is what happens..

I find it less intuitive because of the Javadoc of 
HttpServletRequest.getLocalPort :
 getLocalPort

int getLocalPort()

Returns the Internet Protocol (IP) port number of the interface on which the request was received.

    Returns:
        an integer specifying the port number
    Since:
        Servlet 2.4

So that is the interface (the Connector), not the port number mentioned in the 
Host header.



Or is there just something not clear about the OP's configuration ?

I have no explanation why the OP is using iptables prerouting inversly of what is their common usage with Tomcat.


Agreed. But maybe the OP has a reason for running Tomcat on port 8080, but still doesn't want clients to have to specify a non-standard HTTP port in their URLs.

-Ognjen

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to