Auf Apache 2.4 in einem virtualhost habe ich:
UseCanonicalName On
ServerName somename
ServerAlias www.someothername.com
Nach den Dokumenten:
With UseCanonicalName On Apache verwendet den in der ServerName-Direktive angegebenen Hostnamen und Port, um den kanonischen Namen für den Server zu erstellen. Dieser Name wird in allen selbstreferenzierenden URLs und für die Werte von SERVER_NAME und SERVER_PORT in CGIs verwendet.
Wenn ich in meiner Tomcat / CFML-Anwendung die URL besuche, www.someothername.com
würde ich erwarten, dass sie im CGI-Bereich angezeigt wird:
server_name: somename
aber stattdessen bekomme ich:
server_name: www.someothername.com
Es ist, als würde die Richtlinie völlig ignoriert.
# Proxy CFML files to Tomcat
RewriteCond %{REQUEST_FILENAME} /[^/:]+\.cfml*($|/)
RewriteRule (.*) ajp://%{HTTP_HOST}:8009$1 [P,L]
Ich habe auch versucht:
RewriteRule (.*) ajp://%{SERVER_NAME}:8009$1 [P,L]
und mit mod_proxy anstelle von AJP:
RewriteRule (.*) http://%{SERVER_NAME}:8888$1 [P,L]
Die letzten 2 führen zu einer DNS-Suche, werden somename
jedoch weiterhin www.someothername.com
im Feld CGI.SERVER_NAME zurückgegeben
Ich möchte darauf hinweisen, dass der einzige Grund, warum ich dies tue, darin besteht, dass ich Massen-Virtual-Hosting mit mache, mod_cfml
um automatisch Tomcat-Kontexte zu erstellen, und ich möchte, dass der Kontext und die Anwendung einen von der vhost-Konfiguration abgeleiteten Kurznamen verwenden. Ich schätze, ich könnte einfach einen Header setzen (sogar den Host: -Header umschreiben), aber die Verwendung von ServerName schien die eleganteste Lösung zu sein.
UPDATE: In den Client-Headern ist mir etwas aufgefallen, das wahrscheinlich relevant ist. Es gibt 2 Überschriften, die ich noch nicht gesehen habe:
x-forwarded-host: www.someothername.com
x-forwarded-server: somename
Ich muss wissen, wie und warum diese Header gesetzt wurden. Ich gehe davon aus, dass es entweder Tomcat oder mod_cfml war. Kann ich mich darauf verlassen, dass der x-forwarded-server
Wert immer ServerName ist?
quelle