Faça com que o host local do Windows (porta 80) encaminhe para a porta 8080 para o serviço Apache

9

Descoberta recente

Com o IIS configurado de volta à porta 80, quando coloco http://localhost/o computador WHS, a página de aviso "Há um problema com o certificado de segurança deste site". Se eu "continuar" de qualquer maneira, esse URL será exibido https://localhost/Remote/logon?ReturnUrl=%2fremoteem um Acesso via Web Remoto do Windows Home Server 2011 para usernamee password. Agora, não me lembro com certeza, mas não acredito que originalmente apenas http://localhost/tenhamos trazido 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, os meandros da rede! Uma coisa que me incomodava era o motivo pelo qual dois sites "apareciam" parcialmente e os outros não. Em seguida, executar o rastreamento NET do Firebug me revelou que meu principal problema é que meu ISP está atuando como proxy DNS e, é claro, não está encontrando meus sites de teste. Mas ele faz encontrar os dois sites que são ao vivo no www.(não test.) endereço, e parece servir-se aqueles, mas as imagens são bloqueados porque (presumo) que criaram blocos para acessar os arquivos de imagem se não da www.para o site em particular.

Isso explica o mistério das imagens que não são exibidas (espere por localhost:8080ligação direta ) e o comportamento estranho de encontrar "parcialmente" esses dois locais específicos dos cinco sites.

Agora preciso descobrir como configurar corretamente meu roteador ou um arquivo proxy para redirecionar para o meu computador WHS. Estou no serviço de internet via satélite Wildblue, pois estou fora da área de qualquer conexão de serviço mais rápida. Eles têm um arquivo "otimizador" (não sei se é visível para todos ou não; se não, é basicamente o mesmo que esta versão ), que posso modificar e colocar no meu sistema local para obter o que eu preciso, mas não sei exatamente o que preciso fazer lá.

Se alguém tiver alguma sugestão sobre a modificação desse arquivo ou sobre como configurar meu roteador Linksys E1200 para evitar o envio ao proxy se for um site local, esse pode ser o primeiro (e possivelmente o último) passo para resolver meus problemas.

Código representativo com base nas recomendações da harrymc ... ainda não está funcionando

Porta do 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 eu acreditava ser o problema principal (pode ser um problema secundário)

Como faço para o Windows Home Server (executando o IIS) encaminhar URLs de host local específicos para a porta, 8080para que o Apache (não o IIS) em execução na mesma máquina atenda à solicitação para servir a página?

O c:\Windows\System32\drivers\etc\hostsarquivo foi alterado (veja abaixo), mas presumo que isso não tenha nada a ver com o redirecionamento para uma nova porta. O IIS, também presumo, está captando a test.whateversolicitação de URL específica na porta 80e roteando para seu próprio host local na mesma porta.

Eu baixei o Application Request Routing de uma dica em um site que encontrei na pesquisa, mas, ao analisá-lo, não tenho certeza se isso ajudará ou não (minha esperança era configurar algum encaminhamento baseado em URL para a porta 8080por ele). Eu sou um web designer, não um assistente de rede. Então, como tudo isso funciona é algo ilusório para mim.

Uma possível direção a seguir

Com base neste 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 testar bem)

Condições:

Corresponder a qualquer um ... (estes pareciam testar a correspondência de padrões)

{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 estão agora em segundo plano, por trás da nova solicitação acima.


Informações de fundo

Recentemente, mudei uma área de trabalho antiga que estava executando o Windows XP para ser um Windows Home Server (2011). O computador antigo também era o host dos sites de teste locais em execução na instalação do Apache. Fazendo uma pesquisa, revelou que executar o Apache em uma máquina WHS não seria tão difícil quanto eu pensava (muitos sites dizem que o IIS do WHS e Apache causaria problemas, mas alguns que eu encontrei não mencionaram problemas se configurados corretamente - (basicamente, verifique se não há conflito de portas).

Então, instalei um WAMP (versão de 64 bits) no computador WHS e alterei as configurações no httpdarquivo de configuração do Apache para escutar na porta, 8080para que não houvesse conflito com o IIS. Eu configurei meu arquivo de 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 edição (original)

Enquanto as páginas dos sites locais ficam bem, e todos os css e javascript estão funcionando, todos os arquivos de imagem não são exibidos . As informações do caminho estão corretas, como evidenciado ao clicar com o botão direito e selecionar View Image Info(no Firefox ... a propósito, as imagens não são exibidas em nenhum navegador, portanto, não é um bug do navegador).

O que eu notei, no entanto, é que a Typecaixa de informações da imagem está sendo exibida text/html, em vez de PNG Imageou JPEG Imageetc. Esta é a informação abaixo onde mostra as informações do caminho (endereço) - nessa seção, ele reconhece que o próprio arquivo é de Typeum Imageou de Background.

Mas, apesar desse fato, parece que, em vez de reconhecer o tipo mime correto (presumo) da imagem no html (na verdade, o hpml gerado pelo php), ele está tentando processar a imagem (seja um imgelemento ou um css background-image) como texto e, portanto, não me dá nada! Mas não consigo descobrir o porquê. O mimearquivo 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 devem estar causando o problema (eles não estavam sendo executados no XP nem no site ativo).

Então, estou buscando pensamentos sobre:

  1. Minha análise do tipo mime está sendo o problema correto (com base na atualização, provavelmente não)?
  2. Onde mais posso procurar que possa estar causando o problema e como corrigi-lo? Ainda poderia haver um conflito com o IIS no WHS e, em caso afirmativo, o que? Poderia ser algo no php (isso parece improvável), e se sim, o que? O que mais posso verificar no Apache?

Informações atualizadas (com mais problemas [relacionados?])

Fazendo um pouco mais de confusão, cheguei à conclusão de que pelo menos parte do problema parece ser a mudança de porta :8080. Primeiro, percebi que nem tudo estava bem como pensei em acessar todos os meus sites. Eu tenho essa representação no meu c:\Windows\System32\drivers\etc\hostsarquivo:

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 vhostsarquivo 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 : site1e site4estão aparecendo, mas sem imagens. Os outros três não aparecem, mas cedem Network Error (dns_unresolved_hostname).

No entanto, se eu acessar o primeiro site nos vhosts na máquina WHS usando localhost:8080na url, em seguida, as imagens não aparecem , e qualquer que seja o local é o primeiro no meu arquivo vhosts também aparece (que se espera); no entanto, faz isso mesmo que não fosse anteriormente (por isso, se eu passar site2para a primeira posição, ele começará a "trabalhar" por localhost:8080chamada).

Sei que meus arquivos de imagem estão retornando um erro 403( corrigido, originalmente eu disse 404 ) quando acessado via test.site4.comsintaxe no URL, e suspeito que minhas imagens estejam aparecendo como text/htmlporque os arquivos estão retornando esse erro (por isso não acho que é um problema do tipo mime agora, tanto por não encontrar as imagens). Mas o mais estranho é que os caminhos estão corretos e os arquivos sem imagem (javascript e css) estão surgindo bem.

Então, na minha opinião, talvez pareça algo com o switch de porta 8080. Meus problemas agora são:

  1. Por que meus arquivos hosts e vhosts não estão encontrando corretamente todos os sites (há algum outro arquivo que preciso modificar em um Windows Home Server)?
  2. Nesses sites, por que as imagens não são encontradas especificamente (com o erro 403, isso é "proibido", acredito, o que não faz sentido se os outros arquivos nas pastas do site estão sendo autorizados a acessar)?
  3. Por que o localhost:8080acesso funciona, não importa em relação às duas primeiras questões?

Algumas informações adicionais

Foi feita uma solicitação para eu publicar arquivos de log. No entanto, descobri que não havia logs ocorrendo, exceto (parece) naqueles casos em que eu havia acessado via localhost:8080chamada direta para o site "padrão".

Então, eu desliguei os serviços WAMP, fui para 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 buscá-los ( alguém pode confirmar minha suposição lá? ) , E, portanto, o problema pode ser algo ainda em obter o controle próprio para o servidor WAMP.

ScottS
fonte
Certifique-se de que as permissões nas imagens reais estejam definidas para que possam ser acessadas .. apenas um palpite.
precisa saber é o seguinte
@ ekaj - Agradeço o palpite e verifiquei as permissões, mas aparentemente esse não é o problema.
Scotts
@ ekaj - Adicionei algumas informações atualizadas ao meu problema que podem ajudá-lo a criar um "palpite" diferente (talvez uma solução!).
Scotts
Você tem certeza de que o Application Request Routing não funciona? blogs.iis.net/wonyoo/archive/2008/07/09/… parece fazer o que você está pedindo. Observe que você pode escrever várias regras para corresponder aos seus sites diferentes.
Erikxiv
@ erikxiv - não, não tenho certeza. Meu problema era o fato de eu estar em um território desconhecido para mim, então não sabia como fazê-lo funcionar, se pudesse. Vou procurar no link e voltar para você.
Scotts

Respostas:

1

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>
Scott C Wilson
fonte
Boa sugestão, mas apenas alguns sites têm .htaccessarquivos e nenhum ForceTypeno código.
Scotts
@ ScottWilson - Adicionei algumas informações atualizadas ao meu problema que podem ajudá-lo a encontrar uma solução diferente.
Scotts
0

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. Eu suspeito que isso possa ser simplesmente um problema de nome de domínio ou seu site pode usar caminhos absolutos para imagens (apenas supondo ...) que o apache lida incorretamente

Martino Dino
fonte
Interessante. Não há arquivos de log para minhas tentativas de acesso, exceto nos casos em que eu estava usando o localhostacesso direto . Então, desliguei o servidor WAMP completamente e descobri que estava obtendo os mesmos resultados. O que parece indicar que o Apache não está lidando com as solicitações, mas o IIS está.
Scotts
By the way, eu mal digitado anteriormente, as imagens estão dando um 403.
Scotts
Talvez seja melhor desviar os pedidos do navegador e verificar se ele realmente pede isso? Ou verificar o log do apache err se ele não conseguiu ligar para o porto ou dá algumas questões endereço ...
Martino Dino
@ MartinoDino - Obrigado por suas sugestões. Acabei de atualizar algumas informações na minha pergunta que acredito que agora meu principal problema seja o fato de meu computador WHS nem sequer lidar com a solicitação dos meus sites de teste, mas sim o meu proxy ISP. Se eu conseguir resolver isso, começarei a descobrir se minhas outras partes locais estão realmente funcionando.
Scotts
0

O segmento que o IIS redireciona para o Apache contém uma solução muito simples, que segue na direção oposta à sua.

O gravador da última entrada diz que os redirecionamentos no IIS são muito limitados para fazer o trabalho.

Usando sua solução, você configuraria o IIS para receber solicitações de outra porta que não seja 80, por exemplo 90. Em seguida, coloque o Apache como receptor das 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.

harrymc
fonte
@ harrymc - obrigado pela entrada. Isso pode ser útil, no entanto, se você olhar para minha atualização mais recente (recém publicada), descobri que meu primeiro problema principal é que os URLs de teste nunca chegam ao meu computador local, mas estão tentando ser manipulados pelo meu Proxy ISP. Se você tem algumas sugestões para contornar isso, estou aberto.
Scotts
Isso ainda pode estar de acordo com minha sugestão: o IIS pode não ser inteligente o suficiente para detectar que o host local é uma interface de loopback local; portanto, procure-o na Internet. Obviamente, o host local nunca será encontrado lá. Não tenho o ambiente certo para testar isso, mas o artigo acima parece dizer que o Apache faz o trabalho de maneira mais inteligente.
harrymc
@ harrymc - Como mencionei na minha pergunta, não sou realmente uma pessoa da rede, por isso tenho algumas perguntas e preciso de um pouco de orientação. Primeiro, mudar meu WHS para a porta 90 afetará como o WHS funciona como um servidor doméstico? Segundo, o link que você postou se refere à tentativa de acessar subdomínios, enquanto eu não estou (em vez disso, estou tentando acessar diferentes domínios locais); então isso muda alguma coisa? Para obter orientação sobre a solução vinculada, eu tenho algum conhecimento sobre o Apache, portanto, número 4-5, sigo, mas tenho conhecimento quase nulo do IIS; portanto, pontos 1 e 3 não tenho certeza de como fazer (ou mesmo no meu caso, se eu necessário fazer).
Scotts
O número 2-3 provavelmente não se aplica ao seu caso e pode ser ignorado. É necessário o número 1, pois essa é a ideia principal. O truque aqui é tornar o Apache o principal servidor front-end da Internet encarregado de encaminhamentos, e o IIS em um secundário e local que não esteja conectado à Internet, exceto pelo Apache. Talvez este artigo possa ajudar na alteração da porta. Se você nunca fez isso antes, anote cuidadosamente tudo o que muda, apenas por precaução.
harrymc
@ harrymc - Tendo feito as alterações, não consigo nem iniciar meu servidor WAMP. Não sei por que, mas, no momento, impede um teste completo para saber se vai funcionar. Também estou me perguntando se, no primeiro link, ourdomain.domé algo específico para o meu computador ou não (ou é apenas um nome arbitrário, já que ele estava lidando com subdomínios ... deveria ser o meu localhost?). Além disso, no primeiro link, o our.ip.addesspara o roteamento para o IIS será o mesmo para o servidor Apache, pois eles estão no mesmo computador (apenas uma porta diferente). Isso não deve causar problemas, certo?
Scotts
0

Como você o localizou para um problema de DNS, o resultado básico é que você precisa de um servidor DNS local que possa ser configurado. Você também mencionou um roteador Linksys E1200 e o Windows Home Server, para que você possa seguir duas abordagens.

Primeiro, você pode considerar executar um firmware de terceiros (por exemplo, DD-WRT, OpenWRT, Tomato) no seu roteador. O que você possui está usando um chipset Broadcom e deve ter flash adequado; O DD-WRT lista como suportado. Minha maior preocupação é que, de alguma forma, a comunidade de firmware de roteadores de terceiros pareça ter evoluído até o ponto em que é como tentar executar o Linux no início dos anos 90. Você pode tentar percorrer os fóruns para encontrar o que precisa, mas não confie no banco de dados do roteador no site DD-WRT, pois ele direcionará você para as coisas erradas. No geral, essa opção não me enche de confiança e, a menos que você tenha um segundo roteador disponível, não tenho certeza se posso recomendá-lo, a menos que você goste de ajustar esse tipo de coisa.

Segundo, você pode fazer RDP no WHS e ativar o servidor DNS, conforme descrito neste tópico do fórum. Abordagem básica, entrada RDP, painel de controle, Adicionar / remover programas, adicionar / remover componentes do Windows (botão), marque a caixa de seleção Servidor DNS e saia novamente. O que não tenho certeza é se você obtém o console de gerenciamento DNS com isso, e não tenho uma caixa WHS para testá-lo. Se você conseguir esse console, ele estará em Ferramentas Administrativas / DNS. Para usá-lo como quiser, você precisará adicionar novas zonas de encaminhamento; para o tipo de coisa que você está fazendo, eu adicionaria uma zona para cada host (por exemplo, uma zona para www.samplesite.whatever) e, em seguida, adicionaria uma entrada de registro A sem nome especificado, o que o tornará o padrão para isso. zona. A outra abordagem seria adicionar uma zona para samplesite.whatever e, em seguida, adicionar registros A nomeados (por exemplo, "www" ou "mail"), mas isso pode acabar bloqueando coisas que você não deseja bloquear. A zona mais segmentada evita que você afete coisas que não deseja redirecionar. Você apontará todos os seus sistemas para esta caixa como o servidor DNS. Por padrão, isso fará sua própria resolução DNS externa, ignorando completamente os servidores DNS do seu ISP; se você quiser usá-los como o próximo estágio, poderá especificar seus endereços como Encaminhadores nas propriedades do servidor DNS (clique com o botão direito do mouse e procure).

Terceiro, se a opção Dois não funcionar e a opção Um o assusta, você pode configurar uma caixa Linux internamente e configurá-la como um servidor DNS. Há muitas instruções por aí sobre como fazê-lo; uma pesquisa superficial revelou este artigo de Mark Kolich que parece ser instruções decentes para fazer exatamente isso. Se você estiver disposto, isso também poderá oferecer os recursos necessários para você experimentar a hospedagem baseada em Linux (a menos que esteja desenvolvendo o Windows, por exemplo, .NET ou similares).

Essa comparação da Wikipedia de servidores DNS também pode ser útil. É possível notar que o Simple DNS Plus (comercial), Posadis (gratuito, obsoleto? 2004), MaraDNS (gratuito, não GUI, vale a pena olhar) e Unbound (gratuito, possui downloads binários do Windows, não foi mais longe) . Tudo isso deve ser executado no Windows.

cerca
fonte
Obrigado pela sua resposta. Embora seja verdade que, de certo modo, seja um problema de DNS, o que eu quero é que qualquer chamada de host local nem sequer vá ao DNS do meu ISP para começar (não deveria). Parece "exagero" de alguma forma ter que configurar um DNS localmente para lidar com o que já deve ser tratado, automaticamente pelo sistema. Minhas solicitações para sites de host local nem deveriam estar indo para o DNS do meu ISP.
Scotts
Se você adicionar as linhas relevantes ao arquivo Hosts local, elas poderão não existir - no XP, ele estava em c: \ windows \ system32 \ drivers \ etc \ hosts, não sei onde está o Vista / 7 e se varia entre 32 e 64 bits. e 64 bits. Tenho visto alguns aplicativos ou situações de erro, onde que podem quebrar, como observado aqui: fencepost.net/2009/11/dns-fails-nslookup-works-fix
fencepost
Eu já adicionei essas linhas a esse local (desde o início), mas me perguntei se é o local correto em um sistema de 64 bits (que é o WHS).
Scotts
Sua pergunta me levou a cavar um pouco mais e isso ( sepago.de/helge/2009/06/04/… ) parece ser muito relevante.
fencepost
Isso foi interessante, mas não tenho certeza da utilidade, pois o C:\Windows\System32\drivers\etcarquivo já foi o que eu modifiquei, mas ainda não parece estar sendo escolhido na definição dos sites locais. O artigo parece indicar que o arquivo é usado 64-bitnativamente e 32-bitpor redirecionamento. Como isso pode afetar minha instalação do Apache e por que localhosté ignorado nos meus sites locais?
Scotts
0

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 IPv4 do Protocolo da Internet v4 (Configurações avançadas de IP) têm 2 classe C ip 192.168.1.100 e adicionamos 192.168.1.200 isso também ajuda no SEO por causa da classe Endereços IP para 2 sites diferentes com links entre si.

Tadeh Davtian
fonte