简体   繁体   中英

URL without trailing / gets internal port appended

FireWall -> LoadBalancer -> Backend

Public IP is bound to firewall -> NAT to private IP farm on LB -> balance to backend on another private subnet.

https://example.com/test-redirect/index.php --> works fine
https://example.com/test-redirect/ --> works fine
https://example.com/test-redirect --> https://example.com:44312/test-redirect/ (Where 44312 is the internal port number apache has the SSL vhost bound to. FAILS)

Apache Config:

<VirtualHost *:80>
    ServerAdmin REDACTED
    ServerName example.com
    ServerAlias *.example.com

    DocumentRoot "/var/www/example.com"

    Include conf.d/global-http-host-includes.conf
</VirtualHost>

<VirtualHost <internal-ip>:44312>
    DocumentRoot "/var/www/example.com"

    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
    SSLCertificateFile REDACTED.crt
    SSLCertificateKeyFile REDACTED.key

    Include conf.d/global-ssl-host-includes.conf
</VirtualHost>

The client that this is for handles the redirects to HTTPS from HTTP in his application. We have said numerous times that this behaviour is extremely likely top originate from the application, and it isn't something the stack nor the Apache config is doing.

Has anyone come up against a similar scenario as this? Or might have any ideas as to what is causing the internal Apache port number to be appended to the URL with it redirects?

This turned out to be an issue with not having the ServerName and ServerAlias values wihtin the SSL vHost aswell as the non-SSL vHost. After adding the name and alias in to those, the issue was fixed.

I would say this is perhaps a bug within Apache, but also some amount of misconfiguration.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM