Découverte récente
Avec IIS remis au port 80
, lorsque http://localhost/
j'installe sur l'ordinateur WHS, il me donne la page d'avertissement «Il y a un problème avec le certificat de sécurité de ce site Web». Si je «continue» de toute façon, cette URL apparaît https://localhost/Remote/logon?ReturnUrl=%2fremote
pour un accès Web à distance Windows Home Server 2011 pour a username
et password
. Maintenant, je ne m'en souviens pas avec certitude, mais je ne pense pas qu'à l'origine, cela http://localhost/
ait soulevé cette question. Cependant, il semble que cela puisse affecter toutes les tentatives d'accès à localhost (quel que soit le port).
Quel peut être le principal problème
Oh les subtilités du réseautage! Une chose qui ne cessait de me déranger était la raison pour laquelle deux des sites apparaissaient "partiellement" et les autres pas du tout. Ensuite, l'exécution du suivi NET de Firebug m'a révélé que mon principal problème est que mon FAI agit en tant que proxy DNS , et bien sûr, il ne trouve pas mes sites de test. Mais il trouve les deux sites qui sont en direct à l' adresse www.
(non test.
) et semble les servir, mais les images sont bloquées parce que (je suppose) j'ai mis en place des blocs pour accéder aux fichiers image si ce n'est à partir du www.
pour le site particulier.
Cela explique le mystère des images ne montrant pas (attendez-vous à un localhost:8080
appel direct ) et le comportement étrange de trouver "partiellement" ces deux sites spécifiques sur les cinq.
Maintenant, je dois comprendre comment configurer correctement mon routeur ou un fichier proxy pour rediriger vers mon ordinateur WHS. Je suis sur le service Internet par satellite Wildblue, car je suis en dehors de toute connexion de service plus rapide. Ils ont un fichier "optimiseur" (je ne sais pas s'il est visible par tout le monde ou pas, sinon, c'est fondamentalement le même que cette version ), que je pourrai peut-être modifier et mettre sur mon système local pour atteindre ce dont j'ai besoin, mais je ne sais pas exactement ce que je devrais y faire.
Si quelqu'un a des suggestions sur la modification de ce fichier ou sur la façon de configurer mon routeur Linksys E1200 pour éviter d'envoyer au proxy s'il s'agit d'un site local, cela peut être la première (et éventuellement la dernière) étape pour résoudre mes problèmes.
Code représentatif basé sur les recommandations de harrymc ... ne fonctionne toujours pas
Port IIS défini sur :90
.
httdp
fichier:
Listen *:80
ServerName localhost:80
vhosts
fichier:
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>
Mise à jour précédente: Ce que j'avais cru être la question principale (peut être un problème de sous)
Comment puis-je faire en sorte que Windows Home Server (exécutant IIS) transfère des URL d'hôte local spécifiques au port 8080
afin qu'Apache (et non IIS) fonctionnant sur la même machine récupère la demande pour servir la page?
Le c:\Windows\System32\drivers\etc\hosts
fichier a été modifié (voir ci-dessous), mais je suppose que cela n'a rien à voir avec le réacheminement vers un nouveau port. IIS, je suppose également, récupère la test.whatever
demande d'URL particulière sur le port 80
et l'achemine vers son propre hôte local sur le même port.
J'ai téléchargé Application Request Routing à partir d' une astuce sur un site que j'ai trouvé en recherchant, mais en le regardant, je ne sais pas si cela vous aidera ou non (mon espoir était de configurer une redirection basée sur l'URL pour le porter 8080
). Je suis un concepteur Web, pas un assistant réseau. Alors, comment tout cela fonctionne est quelque peu difficile à comprendre pour moi.
Une direction possible à suivre
Sur la base de ce lien (trouvé après une recherche plus basée sur le premier commentaire d'erikxiv ci-dessous), j'ai tenté ce qui suit dans IIS en tant que réécriture d'URL:
Règle de sortie:
Match: .*
(semblait tester correctement)
Conditions:
Correspond à n'importe lequel de ... (ceux-ci semblaient tester la correspondance de modèle d'accord)
{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
Action de réécriture:
http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
Mais il ne semble toujours pas y avoir de transfert!
Les informations ci-dessous constituent désormais tous les antécédents de la nouvelle demande ci-dessus.
Informations de fond
J'ai récemment changé un ancien bureau qui exécutait Windows XP pour devenir un Windows Home Server (2011). L'ancien ordinateur était également l'hôte des sites de test locaux fonctionnant sur une installation Apache. Faire des recherches a révélé que l'exécution d'Apache sur une machine WHS ne serait pas aussi difficile que je le pensais (de nombreux sites disent que IIS de WHS et Apache causeraient des problèmes, mais certains que j'ai trouvés ne mentionnaient aucun problème s'ils étaient correctement configurés) -fondamentalement, assurez-vous qu'il n'y a pas de conflit de port).
J'ai donc installé un WAMP (version 64 bits) sur l'ordinateur WHS et modifié les paramètres du httpd
fichier de configuration Apache pour écouter au port 8080
afin qu'il n'y ait pas de conflit avec IIS. J'ai configuré mon fichier d'hôte virtuel comme sur l'ordinateur XP, uniquement avec le changement de port également.
Fondamentalement, tout semblait bien fonctionner (cependant, voir la mise à jour), sauf ...
Le problème (original)
Alors que les pages vers les sites locaux fonctionnent très bien et que tous les CSS et Javascript fonctionnent, chaque fichier image ne s'affiche pas . Les informations sur le chemin sont correctes comme en témoigne un clic droit et une sélection View Image Info
(dans Firefox ... d'ailleurs, les images ne s'affichent dans aucun navigateur, donc ce n'est pas un bug de navigateur).
Ce que j'ai remarqué, cependant, c'est que Type
dans la zone d'informations sur l'image s'affiche text/html
, plutôt que PNG Image
ou JPEG Image
etc. Ceci est dans les informations ci-dessous où il montre les informations de chemin (adresse) - dans cette section, il reconnaît que le fichier lui-même est de Type
deux Image
ou Background
.
Mais malgré ce fait, il semble qu'au lieu de reconnaître le type mime correct (je suppose) de l'image dans le html (en fait du HTML généré par php), il essaie plutôt de traiter l'image (que ce soit un img
élément ou un css background-image
) comme texte, et donc ne me donnant rien! Mais je ne peux pas comprendre pourquoi. Le mime
fichier contrôlant les types MIME Apache est correct. Les pages ont les en-têtes suivants ...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
... mais ceux-ci ne devraient pas être à l'origine du problème (ils ne l'ont pas fait lors de l'exécution sur XP, ni sur le site en direct).
Je recherche donc des réflexions sur:
- Mon analyse du type MIME est-elle le problème correct (basé sur la mise à jour, probablement pas)?
- Où puis-je chercher qui pourrait être à l'origine du problème et comment le corriger? Serait-ce encore un conflit avec IIS sur le WHS, et si oui, quoi? Cela pourrait-il être quelque chose dans le php (cela semble peu probable), et si oui, quoi? Que puis-je faire d'autre dans Apache?
Informations mises à jour (avec plus de problèmes [liés?])
En faisant plus de déconner, je suis arrivé à la conclusion qu'au moins une partie du problème semble être le changement de port :8080
. Tout d'abord, j'ai réalisé que tout n'allait pas aussi bien que je le pensais en accédant à tous mes sites. J'ai cette représentation dans mon c:\Windows\System32\drivers\etc\hosts
dossier:
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
Et cette représentation dans mon vhosts
fichier 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>
Voici le comportement : site1
et site4
apparaissent, mais sans images. Les trois autres ne se présentent pas du tout, mais donnent Network Error (dns_unresolved_hostname)
.
Cependant, si j'accéder au premier site dans les vhosts sur la machine WHS en utilisant localhost:8080
l'URL, puis les images n'apparaissent , et quel que soit le site est d' abord dans mon fichier vhosts apparaît également ( ce qui est prévu); cependant, il le fait même si ce n'était pas le cas auparavant (donc si je passe site2
à la première position, il commence à "fonctionner" via l' localhost:8080
appel).
Je sais que mes fichiers d'image renvoient une erreur 403
( corrigée, à l'origine j'ai dit 404 ) lorsqu'ils sont accessibles via la test.site4.com
syntaxe dans l'URL, et je soupçonne que mes images s'affichent text/html
parce que les fichiers renvoient cette erreur (donc je ne le pense pas est un problème de type mime maintenant autant un échec à trouver les images). Mais la chose étrange est que les chemins sont corrects et que les fichiers non-image (javascript et css) se présentent correctement.
Donc, dans mon esprit, il semble que ce soit quelque chose avec le commutateur de port sur 8080
. Mes problèmes sont maintenant:
- Pourquoi mes fichiers hôtes et vhosts ne trouvent-ils pas correctement tous les sites (y a-t-il un autre fichier que je dois modifier sur un serveur Windows Home)?
- Sur ces sites, cela fonctionne, pourquoi les images ne sont-elles pas spécifiquement trouvées (avec l'erreur 403, c'est "interdit" je crois, ce qui n'a aucun sens si les autres fichiers des dossiers du site Web sont autorisés à accéder)?
- Pourquoi l'
localhost:8080
accès fonctionne-t-il quoi qu'il arrive par rapport aux deux premiers problèmes?
Quelques informations supplémentaires
Une demande a été faite pour moi de publier des fichiers journaux. Cependant, j'ai découvert qu'aucun journal ne se produisait sauf (il semble) dans les cas où j'avais accédé via l' localhost:8080
appel direct au site "par défaut".
J'ai donc désactivé les services WAMP, puis je suis allé à l'URL et j'ai découvert le même comportement que lorsque WAMP était en cours d'exécution. Cela semblerait indiquer qu'IIS contrôle toujours les noms de domaine, plutôt qu'Apache les récupérant ( quelqu'un peut-il confirmer mon hypothèse là-bas? ) , Et donc le problème pourrait bien être quelque chose de toujours à obtenir le contrôle lui-même sur le serveur WAMP.
Réponses:
Avez-vous peut-être un fichier .htaccess qui provoque le traitement des images en texte / html?
la source
.htaccess
fichiers, et aucun n'en aForceType
dans le code.Si vous pouvez fournir vos fichiers access.log (au moins quelques lignes montrant l'état 404 pour les demandes d'images), nous serions en mesure de vérifier ce qui ne va pas. Je soupçonne que cela pourrait simplement être un problème de nom de domaine, ou votre site peut utiliser des chemins absolus pour les images (juste deviner ...) qu'apache ne gère pas correctement
la source
localhost
accès direct . J'ai donc éteint le serveur WAMP tous ensemble et j'ai constaté que j'obtenais les mêmes résultats. Ce qui semble indiquer qu'Apache ne gère pas les demandes pour commencer, mais IIS l'est.La redirection du thread IIS vers Apache contient une solution très simple, qui va dans la direction opposée à la vôtre.
L'auteur de la dernière entrée dit que les redirections dans IIS sont trop limitées pour faire le travail.
En utilisant sa solution, vous configurez IIS pour recevoir des demandes d'un autre port que 80, par exemple 90. Ensuite, mettez Apache comme récepteur pour les deux ports 80 et 8080, avec une redirection du port 80 vers le port 90. Apache parvient apparemment à faire ce que IIS ne peut pas.
la source
ourdomain.dom
c'est quelque chose de spécifique à mon ordinateur ou non (ou est-ce juste un nom arbitraire, car il traitait de sous-domaines ... le mien devrait-il l'êtrelocalhost
?). De plus, dans le premier lien, leour.ip.addess
routage vers IIS sera le même pour le serveur Apache, car ils se trouvent sur le même ordinateur (juste un port différent). Cela ne devrait pas poser de problèmes, non?Comme vous l'avez identifié jusqu'à un problème DNS, le résultat de base est que vous avez besoin d'un serveur DNS local que vous pouvez configurer. Vous mentionnez également un routeur Linksys E1200 et Windows Home Server, il y a donc deux approches que vous pouvez adopter.
Tout d'abord, vous pouvez envisager d'exécuter un firmware tiers (par exemple DD-WRT, OpenWRT, Tomato) sur votre routeur. Celui que vous utilisez utilise un chipset Broadcom et devrait avoir un flash adéquat; DD-WRT le répertorie comme étant pris en charge. Ma plus grande préoccupation est que, d'une manière ou d'une autre, la communauté de micrologiciels de routeurs tiers semble avoir évolué au point où c'est comme essayer de faire tourner Linux au début des années 90. Vous pouvez essayer de fouiller les forums pour trouver ce dont vous avez besoin, mais ne faites pas confiance à la base de données du routeur sur le site DD-WRT car cela vous dirigera vers les mauvaises choses. Dans l'ensemble, cette option ne me remplit pas de confiance, et à moins que vous n'ayez un deuxième routeur disponible, je ne suis pas sûr de pouvoir le recommander, sauf si vous aimez modifier ce genre de chose.
Deuxièmement, vous pouvez RDP dans le WHS et activer le serveur DNS comme décrit dans ce fil de discussion. Approche de base, RDP dans, Panneau de configuration, Ajout / Suppression de programmes, Ajout / Suppression de composants Windows (bouton), cochez la case Serveur DNS, sortez. Ce que je ne sais pas, c'est si vous obtenez la console de gestion DNS avec cela, et je n'ai pas de boîte WHS pour le tester. Si vous obtenez cette console, ce sera sous Outils d'administration / DNS. Pour l'utiliser comme vous le souhaitez, vous devrez ajouter de nouvelles zones de transfert; pour le genre de choses que vous faites, j'ajouterais une zone pour chaque hôte (par exemple, ajouter une zone pour www.samplesite.wthing) puis ajouter une entrée d'enregistrement A sans nom spécifié, ce qui en fera la valeur par défaut pour cela zone. L'autre approche serait d'ajouter une zone pour samplesite.wimporte, puis d'ajouter des enregistrements nommés A (par exemple "www" ou "mail"), mais cela pourrait finir par bloquer des choses que vous ne voulez pas bloquer. La zone la plus ciblée vous empêche d'affecter les choses que vous ne souhaitez pas rediriger. Vous pointerez ensuite tous vos systèmes sur cette case en tant que serveur DNS. Par défaut, cela fera sa propre résolution DNS externe en contournant complètement les serveurs DNS de votre FAI; si vous souhaitez les utiliser comme étape suivante, vous pouvez spécifier leurs adresses en tant que redirecteurs dans les propriétés du serveur DNS (cliquez avec le bouton droit et recherchez).
Troisièmement, si l'option deux ne fonctionne pas et l'option un vous fait peur, vous pouvez configurer une boîte Linux en interne et la configurer comme serveur DNS. Il existe de nombreuses instructions sur la façon de le faire; une recherche superficielle a révélé cet article de Mark Kolich qui semble être des instructions décentes pour faire exactement cela. Si vous êtes si enclin, cela peut également vous offrir les ressources dont vous avez besoin pour expérimenter avec un hébergement basé sur Linux (sauf si vous faites du développement basé sur Windows, par exemple .NET ou similaire).
Cette comparaison Wikipedia des serveurs DNS peut également être utile. Il est possible de noter Simple DNS Plus (commercial), Posadis (gratuit, périmé? 2004), MaraDNS (gratuit, non-GUI, intéressant à regarder) et Unbound (gratuit, a des téléchargements binaires Windows, n'a pas creusé plus loin) . Tous ces éléments devraient fonctionner sous Windows.
la source
C:\Windows\System32\drivers\etc
fichier était déjà celui que j'ai modifié, mais il ne semble toujours pas être récupéré en ce qui concerne la définition de mes sites locaux. L'article semble indiquer que le fichier est utilisé en64-bit
natif et32-bit
par redirection. Comment cela pourrait-il affecter mon installation Apache et pourquoilocalhost
est-il ignoré pour mes sites locaux?vous devez avoir
avant
</VirtualHost>
de permettre.quelque chose comme ça
j'utilise 192.168.1.100:80 pour iis et 192.168.1.200:8080 pour apache dans le protocole Internet v4 Les paramètres IPv4 (paramètres IP avancés) ont 2 classe C ip 192.168.1.100 et ajoutent 192.168.1.200 cela aide également au référencement en raison de la classe Adresses C ip pour 2 sites Web différents reliant les uns aux autres.
la source