No Apache 2.4 em um virtualhost eu tenho:
UseCanonicalName On
ServerName somename
ServerAlias www.someothername.com
De acordo com os documentos:
With UseCanonicalName On Apache will use the hostname and port
specified in the ServerName directive to construct the canonical name
for the server. This name is used in all self-referential URLs, and
for the values of SERVER_NAME and SERVER_PORT in CGIs.
Então, no meu aplicativo Tomcat / CFML, quando visito o URL www.someothername.com
, eu esperaria ver no escopo do CGI:
server_name: somename
mas em vez disso eu obtenho:
server_name: www.someothername.com
É como se a diretriz fosse totalmente ignorada.
# Proxy CFML files to Tomcat
RewriteCond %{REQUEST_FILENAME} /[^/:]+\.cfml*($|/)
RewriteRule (.*) ajp://%{HTTP_HOST}:8009$1 [P,L]
Eu também tentei:
RewriteRule (.*) ajp://%{SERVER_NAME}:8009$1 [P,L]
e usando mod_proxy em vez de AJP:
RewriteRule (.*) http://%{SERVER_NAME}:8888$1 [P,L]
Os últimos 2 causam uma pesquisa de DNS em somename
, mas ainda retorna www.someothername.com
no campo CGI.SERVER_NAME
Devo salientar que a única razão pela qual estou fazendo isso é porque estou realizando hospedagem virtual em massa com mod_cfml
para criar automaticamente contextos tomcat e gostaria que o contexto e o aplicativo usassem um nome abreviado derivado de a configuração do vhost. Eu acho que poderia apenas definir um cabeçalho (mesmo reescrever o cabeçalho Host:), mas usando ServerName parecia a solução mais elegante.
ATUALIZAÇÃO: Há algo que notei nos cabeçalhos dos clientes que provavelmente é relevante. Existem 2 cabeçalhos que não vi antes:
x-forwarded-host: www.someothername.com
x-forwarded-server: somename
Eu preciso saber o que define esses cabeçalhos e por quê. Eu estou supondo que seja Tomcat ou mod_cfml. Posso confiar no valor x-forwarded-server
para sempre ser ServerName?