DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25515>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25515

redirects with UseCanonicalName do not use user supplied port

           Summary: redirects with UseCanonicalName do not use user supplied
                    port
           Product: Apache httpd-1.3
           Version: 1.3.29
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: core
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


I have 2 apache 1.3.29 servers, server1 listens port 80 (on a firewall box),
server2 also listens on port 80 (on a box behind the firewall).  The firewall is
configured to forward incoming requests for port 82 to server2 on port 80.

Both servers are configured for "UseCanonicalName off".  However apache seems to
get it's port (for redirect purposes) from where it is listening on, and not
from the user requests.  The documentation for UseCanonicalName says "With
UseCanonicalName Off Apache will form self-referential URLs using the hostname
and port supplied by the client".  My testing is as follows:


With the config as above, I can try this (replacing the actual FQDNs & IPs of
course).  Note that both servers have a directory called "/config" that requires
authentication, but the passwords on each server are different.

wget --http-user=test1 --http-passwd=test1 "http://server2:82/config";

--15:04:07--  http://server2:82/config
           => `config'
Resolving server2... done.
Connecting to server2[10.1.1.1]:82... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://server2/config/ [following]
--15:04:07--  http://server2/config/
           => `index.html'
Connecting to server2[10.1.1.1]:80... connected.
HTTP request sent, awaiting response... 401 Authorization Required
Authorization failed.

As you can see I connected fine to port 82, but I was redirected to port 80. 
Now if I change server2 to listen on port 82 (and thus change the port forward
from 82->80 to 82->82), the redirect will be correct:

 wget --http-user=test1 --http-passwd=test1 "http://server2:82/config";
--15:03:26--  http://server2:82/config
           => `config'
Resolving server2... done.
Connecting to server2[10.1.1.1]:82... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://server2:82/config/ [following]
--15:03:26--  http://server2:82/config/
           => `index.html'
Connecting to server2[10.1.1.1]:82... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]

I verified that "UseCanonicalName off" was working by using another servername
that pointed to the same external ip.  It does use the user supplied servername
as expected.

It is almost as if apache looks at the user specified hostname and port, but
then checks to make sure that the user supplied port matches with one it is
listening on, and then dropps the user supplied port if it does not match.

>From my interpretation of the documentation, it does not appear that this
behaviour is correct.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to