Descoberta recente
Com o IIS configurado de volta para port 80
, quando eu instalo http://localhost/
no computador WHS, aparece a página de aviso "Há um problema com o certificado de segurança deste site". Se eu "Continuar" de qualquer maneira, esse URL aparecerá https://localhost/Remote/logon?ReturnUrl=%2fremote
para um Acesso Web Remoto do Windows Home Server 2011 para um username
e password
. Agora, não consigo me lembrar com certeza, mas não acredito que originalmente apenas tenha http://localhost/
levantado essa questão. No entanto, parece que isso pode afetar qualquer tentativa de acessar o host local (não importa a porta).
Qual pode ser realmente o principal problema
Oh, as complexidades da rede! Uma coisa que sempre me incomodava era por que dois dos sites apareciam "parcialmente" e os outros não apareciam. Então, executar o rastreamento NET do Firebug me revelou quemeu principal problema é que meu ISP está agindo como proxy DNS, e é claro que não está encontrando meus sites de teste. Mas ele encontra os dois sites que estão ativos no endereço www.
(não test.
) e parece atendê-los, mas as imagens estão bloqueadas porque (presumo) eu configurei bloqueios para acessar os arquivos de imagem, se não do para www.
o determinado site.
Isso explica o mistério das imagens não mostradas (espera-se em localhost:8080
chamada direta) e o comportamento estranho em encontrar "parcialmente" esses dois locais específicos dos cinco.
Agora preciso descobrir como configurar corretamente meu roteador ou um arquivo proxy para redirecionar de volta ao meu computador WHS. Estou no serviço de Internet via satélite Wildblue, pois estou fora da área de conexões de serviço mais rápidas. Eles têm umarquivo "otimizador"(Não sei se está visível para todos ou não, se não, ébasicamente igual a esta versão), que posso modificar e colocar em meu sistema local para conseguir o que preciso, mas não tenho certeza do que exatamente preciso fazer lá.
Se alguém tiver alguma sugestão sobre como modificar esse arquivo ou como configurar meu roteador Linksys E1200 para evitar o envio para o proxy se for um site local, esse pode ser o primeiro (e possivelmente o último) passo para resolver meus problemas.
Código representativo baseado nas recomendações de Harrymc... ainda não funciona
Porta IIS definida como :90
.
httdp
arquivo:
Listen *:80
ServerName localhost:80
vhosts
arquivo:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
ProxyRequests off
ProxyPass / http://127.0.0.1:90/
ProxyPassReverse / http://127.0.0.1:90/
</virtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site1.net/httpdocs"
ServerName test.site1.net
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site2.net/httpdocs"
ServerName test.site2.net
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site3.com/httpdocs"
ServerName test.site3.com
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site4.com/httpdocs"
ServerName test.site4.com
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/Users/Public/LocalWebsites/site5.com/httpdocs"
ServerName test.site5.com
ProxyRequests off
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
Atualização anterior: O que eutinha acreditadoser o problema principal (pode ser um subproblema)
Como faço para que o Windows Home Server (executando o IIS) encaminhe URLs de host local específicos para a porta, 8080
para que o Apache (não o IIS) em execução na mesma máquina selecione a solicitação para atender a página?
O c:\Windows\System32\drivers\etc\hosts
arquivo foi alterado (veja abaixo), mas presumo que não tenha nada a ver com o redirecionamento para uma nova porta. O IIS, também presumo, está captando a test.whatever
solicitação de URL específica na porta 80
e roteando para seu próprio host local na mesma porta.
Eu baixeiRoteamento de solicitação de aplicativodeuma dica de um site que encontreina pesquisa, mas olhando para isso, não tenho certeza se isso vai ajudar ou não (minha esperança era configurar algum encaminhamento baseado em URL para portar 8080
por meio dele). Sou um web designer, não um assistente de rede. Então, como tudo isso funciona é um tanto evasivo para mim.
Uma possível direção a seguir
Baseado emesse link(encontrado depois de pesquisar mais com base no primeiro comentário do erikxiv abaixo) Tentei o seguinte no IIS como uma reescrita de URL:
Regra de saída:
Correspondência: .*
(parecia ter testado bem)
Condições:
Corresponder a qualquer um de... (estes pareciam testar a correspondência de padrões, ok)
{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
Ação de reescrita:
http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
Mas parece que ainda não há encaminhamento!
As informações abaixo agora são o pano de fundo da nova solicitação acima.
Informações básicas
Recentemente, mudei um desktop antigo que executava o Windows XP para um Windows Home Server (2011). O computador antigo também hospedava sites de teste locais executados em uma instalação do Apache. Fazer algumas pesquisas revelou que executar o Apache em uma máquina WHS não seria tão difícil quanto pensei inicialmente (muitos sites dizem que o IIS do WHS e do Apache causaria problemas, mas alguns que encontrei não mencionaram nenhum problema se configurados corretamente- -basicamente, certifique-se de que não haja conflito de porta).
Então eu instalei umWAMP(versão de 64 bits) para o computador WHS e alterou as configurações no httpd
arquivo de configuração do Apache para escutar na porta, 8080
para que não houvesse conflito com o IIS. Eu configurei meu arquivo host virtual como no computador XP, apenas com a mudança de porta também.
Basicamente,tudo parecia estar funcionando bem(no entanto, consulte a atualização),exceto...
A questão (original)
Embora as páginas dos sites locais funcionem bem e todos os CSS e JavaScript estejam funcionando,todo arquivo de imagem não está aparecendo.A informação do caminho está corretaconforme evidenciado clicando com o botão direito e selecionando View Image Info
(no Firefox... aliás, as imagens não aparecem em nenhum navegador, então não é um bug do navegador).
O que notei, no entanto, é que a Type
caixa de informações da imagem está mostrando text/html
, em vez de PNG Image
ou JPEG Image
etc. Isso está nas informações abaixo, onde mostra as informações do caminho (endereço) - nessa seção, ele reconhece que o próprio arquivo é de Type
um Image
ou de outro Background
.
Mas, apesar desse fato, parece que, em vez de reconhecer o tipo MIME correto (presumo) da imagem dentro do html (na verdade, html gerado pelo php), ele está tentando processar a imagem (seja um img
elemento ou um css background-image
) como texto, e assim não me dando nada! Mas não consigo descobrir por quê. O mime
arquivo que controla os tipos MIME do Apache está correto. As páginas têm os seguintes cabeçalhos...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
... mas eles não deveriam estar causando o problema (não causaram durante a execução no XP, nem no site ativo).
Então, estou buscando pensamentos sobre:
- Minha análise do tipo MIME é o problema correto (com base na atualização, provavelmente não)?
- Onde mais posso procurar a causa do problema e como corrigi-lo? Ainda poderia haver um conflito com o IIS no WHS e, em caso afirmativo, o quê? Poderia ser alguma coisa no php (isso parece improvável) e, em caso afirmativo, o quê? O que mais posso verificar no Apache?
Informações atualizadas (com mais problemas [relacionados?])
Fazendo mais algumas brincadeiras, cheguei à conclusão de que pelo menos parte do problema parece ser a mudança para port :8080
. Primeiro, percebi que nem tudo estava tão bem quanto eu pensava ao acessar todos os meus sites. Eu tenho esta representação em meu c:\Windows\System32\drivers\etc\hosts
arquivo:
127.0.0.1 localhost
127.0.0.1 test.site1.net
127.0.0.1 test.site2.net
127.0.0.1 test.site3.com
127.0.0.1 test.site4.com
127.0.0.1 test.site5.com
E esta representação no meu vhosts
arquivo apache:
NameVirtualHost *:8080
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site1.net/httpdocs"
ServerName test.site1.net
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site2.net/httpdocs"
ServerName test.site2.net
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site3.com/httpdocs"
ServerName test.site3.com
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site4.com/httpdocs"
ServerName test.site4.com
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site5.com/httpdocs"
ServerName test.site5.com
</VirtualHost>
Aqui está o comportamento: site1
e site4
estão aparecendo, mas sem imagens. Os outros três não aparecem, mas dão Network Error (dns_unresolved_hostname)
.
Porém, se eu acessar o primeiro site nos vhosts na máquina WHS usando localhost:8080
na url,então as imagensfazermostrar-se, e o site que estiver primeiro no meu arquivo vhosts também aparecerá (o que é esperado); no entanto, ele faz isso mesmo que antes não o fizesse (então, se eu passar site2
para a primeira posição, ele começa a "funcionar" via localhost:8080
chamada).
Eu sei que meus arquivos de imagem estão retornando um 403
(corrigido, originalmente eu disse 404) erro quando acessado via test.site4.com
sintaxe no URL, e suspeito que minhas imagens estão aparecendo porque text/html
os arquivos estão retornando esse erro (então não acho que seja um problema do tipo MIME agora, mas sim uma falha em encontrar as imagens ). Mas o estranho é que os caminhos estão corretos e os arquivos que não são de imagem (javascript e css) estão funcionando bem.
Então, na minha opinião, parece que talvez seja algo com a mudança de porta para 8080
. Meus problemas agora são:
- Por que meus arquivos hosts e vhosts não encontram corretamente todos os sites (existe algum outro arquivo que preciso modificar em um Windows Home Server)?
- Nesses sites funciona, por que as imagens especificamente não são encontradas (com o erro 403, que é "proibido", acredito, o que não faz sentido se os outros arquivos nas pastas do site tiverem acesso permitido)?
- Por que o
localhost:8080
acesso funciona de qualquer maneira em relação às duas primeiras questões?
Algumas informações adicionais
Foi feita uma solicitação para que eu postasse arquivos de log. No entanto, descobri que não ocorreram registros, exceto (ao que parece) nos casos em que acessei por meio de localhost:8080
chamada direta para o site "padrão".
Então desliguei os serviços WAMP, fui até os URLs e descobri o mesmo comportamento de quando o WAMP estava em execução.Isso parece indicar que o IIS ainda está controlando os nomes de domínio, em vez de o Apache os selecionar (alguém pode confirmar minha suposição aí?)e, portanto, o problema ainda pode ser algo relacionado à obtenção do controle do servidor WAMP.
Responder1
Você talvez tenha um arquivo .htaccess que esteja fazendo com que as imagens sejam veiculadas como texto/html?
<filesMatch "\.(htm|html|css|js|png|jpg)$">
ForceType 'text/html; charset=UTF-8'
</filesMatch>
Responder2
Se você puder fornecer seus arquivos access.log (pelo menos algumas linhas mostrando o status 404 para as solicitações de imagem), poderemos verificar o que está errado. Suspeito que possa ser simplesmente um problema de nome de domínio ou seu site pode usar caminhos absolutos para imagens (apenas supondo...) que o Apache trata incorretamente
Responder3
O segmentoRedirecionamento do IIS para Apachecontém uma solução muito simples, que vai na direção oposta à sua.
O redator da última entrada diz que os redirecionamentos no IIS são muito limitados para realizar o trabalho.
Usando a solução dele, você configuraria o IIS para receber solicitações de outra porta que não a 80, por exemplo 90. Em seguida, colocaria o Apache como receptor para as portas 80 e 8080, com um redirecionamento da porta 80 para a porta 90. O Apache aparentemente consegue fazer o que o IIS não pode.
Responder4
você precisa ter
<directory>
</directory>
antes
</VirtualHost>
de permitir.
algo assim
<Directory "C:\Apache24\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
eu uso 192.168.1.100:80 para iis e 192.168.1.200:8080 para apache nas configurações do protocolo da Internet v4 IPv4 (configurações de IP avançadas) tenho 2 classes C ip 192.168.1.100 e adicione 192.168.1.200 isso também ajuda no SEO por causa da classe Endereços C IP para 2 sites diferentes vinculados entre si.