
Introdução
Eu tenho uma comunidade e cada usuário pode ter seu próprio subdomínio no meu projeto, por exemplo, nomedeusuario1.meudominio.com
Em PHP eu uso a variável HTTP_HOST para determinar o nome de usuário (username1).
Tarefa
Deixe o usuário rotear seu próprio domínio para seu subdomínio pelo registro CNAME. www.usersdomain.com deve estar vinculado a username1.mydomain.com.
Problema
Depois de adicionar o registro CNAME (www.usersdomain.com), a variável HTTP_HOST deve retornar username1.mydomain.com em vez de www.usersdomain.com.
Como posso corrigir esse problema? Espero que alguém possa me ajudar, por favor.
Configuração atual do host virtual
<VirtualHost *:80>
DocumentRoot /home/webapps/egoapp/current/public
<DirectoryMatch /\.git/|/\.svn/ >
Deny from all
</DirectoryMatch>
<Directory "/home/webapps/egoapp/current">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteEngine On
# Enable status page for monitoring purposes
RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)
RewriteRule ^(/server-status) $1 [H=server-status,L]
# Redirects to a maintenance page if the specified file below exists
# ...but it still allows images to be served
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !/system/maintenance.html
RewriteCond %{SCRIPT_FILENAME} !^(.+).(gif|png|jpg|css|js|swf)$
RewriteRule ^.*$ /system/maintenance.html [L]
# <CUSTOM RULES BEFORE FORWARDING END>
# Proxy the rest to the load balancer
RewriteRule ^/(.*)$ http://127.0.0.1:85%{REQUEST_URI} [P,QSA,L]
# Setup the logs in the appropriate directory
CustomLog /var/log/httpd/access_log combined
#ErrorLog /var/log/httpd/error_log
#Remote logging -- handle by syslog
ErrorLog "|logger -p local3.info -t httperror"
CustomLog "|logger -p local3.info -t http" combined
LogLevel warn
# Deflate
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</VirtualHost>
Idéias para resolver este problema
Acho que tenho que editar o /etc/resolv.conf, mas não sei como ;) Depois de jogar um pouco posso mudar o nome do servidor para 127.0.0.1 ou "domínio indefinido", mas não para nomedeusuário1.meudominio.com
Resov.conf atual
pesquise eu-west-1.compute.servidor
de nomes interno xxx.xxx.xxx.xxx
Responder1
A variável HTTP_HOST é criada a partir da solicitação de URI real que o cliente enviou ao seu host virtual. Na verdade, isso não tem nada a ver com o seu DNS, é apenas uma string, portanto, editar o seu resolv.conf não ajudará. No momento em que o cliente está se conectando ao servidor e fornecendo aquele HTTP_HOST, ele já fez o trabalho de resolver o DNS e determinar para qual endereço IP deseja enviar a solicitação para aquele URI.
Acho que sua solução mais fácil seria armazenar a associação entre www.usersdomain.com e username1 em algum tipo de banco de dados e incluir a variável HTTP_HOST no banco de dados para determinar qual site do usuário retornar.
Sua única outra opção seria configurar manualmente novos hosts virtuais para cada um desses domínios. Isso pode ser demorado e sujeito a erros. Eu escolheria um método baseado em banco de dados que pudesse ser integrado ao seu site e fosse relativamente automatizado.