Получите локальный хост Windows (порт 80) для переадресации на порт 8080 для службы Apache

9

Недавнее открытие

Когда IIS настроен на порт 80, когда я http://localhost/подключаю его к компьютеру WHS, он выдает предупреждение «Существует проблема с сертификатом безопасности этого веб-сайта». Если я в любом случае продолжу, этот URL-адрес появится https://localhost/Remote/logon?ReturnUrl=%2fremoteдля Windows Home Server 2011 Remote Web Access для usernameи password. Теперь я не могу вспомнить наверняка, но я не верю, что изначально просто http://localhost/поднял этот вопрос. Однако кажется, что это может повлиять на любые попытки доступа к localhost (независимо от порта).

Что может быть главной проблемой

О тонкости сетей! Одна вещь, которая продолжала беспокоить меня, заключалась в том, что два сайта «частично» появились, а остальные - совсем нет. Затем, отслеживание NET в Firebug показало мне, что моя главная проблема заключается в том, что мой провайдер выступает в роли DNS-прокси , и, конечно, он не находит мои тестовые сайты. Но это действительно найти два сайта, которые живут на www.(не test.) адрес, и , как представляется , обслуживать тех, но изображения блокируются , потому что (я предполагаю) я настроил блоки для доступа к файлам изображений , если не из www.за конкретный сайт.

Это объясняет загадку не показанных изображений (ожидайте при прямом localhost:8080вызове) и странное поведение при «частичном» обнаружении этих двух конкретных сайтов из пяти.

Теперь мне нужно выяснить, как правильно настроить маршрутизатор или прокси-файл для перенаправления на мой компьютер WHS. Я пользуюсь услугой спутникового интернета Wildblue, так как я нахожусь за пределами зоны быстрого соединения. У них есть файл «оптимизатора» (я не знаю, доступен ли он всем для просмотра или нет, если нет, то он в основном такой же, как у этой версии ), который я могу изменить и установить в своей локальной системе для достижения что мне нужно, но я точно не знаю, что мне нужно делать там.

Если у кого-то есть какие-либо предложения по изменению этого файла или по настройке маршрутизатора Linksys E1200, чтобы избежать отправки на прокси-сервер, если это локальный сайт, то это может быть первым (и, возможно, последним) шагом для решения моих проблем.

Репрезентативный код, основанный на рекомендациях Harrymc ... все еще не работает

Порт IIS установлен в :90.

httdp файл:

Listen *:80
ServerName localhost:80

vhosts файл:

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>

Предыдущее обновление: то, что я считал главной проблемой (может быть подзадачей)

Как заставить Windows Home Server (работающий IIS) перенаправлять определенные локальные URL-адреса в порт, 8080чтобы Apache (не IIS), работающий на той же машине, принимал запрос на обслуживание страницы?

c:\Windows\System32\drivers\etc\hostsФайл был изменен (см ниже), но я полагаю , что не имеет ничего общего с переразводки к новому порту. Я также предполагаю, что IIS получает определенный test.whateverURL-адрес для порта 80и направляет его на свой локальный хост на том же порту.

Я скачал Application Request Routing из подсказки на сайте, который я нашел при исследовании, но, глядя на него, я не уверен, поможет ли это или нет (я надеялся настроить переадресацию на порт 8080через него). Я веб-дизайнер, а не сетевой мастер. Так как все это работает, для меня несколько неуловимо.

Возможное направление идти

Основываясь на этой ссылке (найденной после поиска на основе первого комментария erikxiv ниже), я попытался сделать следующее в IIS для перезаписи URL:

Исходящее правило:

Матч: .*(вроде бы все в порядке)

условия:

Сопоставить с любым из ... (похоже, что тестирование соответствовало шаблону)

{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com

Переписать действие:

http://localhost:8080/{R:0} (it would not let me put R:1 like the example)

Но, похоже, пересылки по-прежнему нет!


Информация, представленная ниже, теперь является основой для нового, вышеупомянутого запроса.


Справочная информация

Недавно я изменил старый рабочий стол с Windows XP на Windows Home Server (2011). Старый компьютер также являлся хостом для локальных тестовых сайтов, работающих при установке Apache. Проведение некоторых исследований показало, что запуск Apache на компьютере WHS не будет таким трудным, как я сначала подумал (многие сайты говорят, что IIS WHS и Apache могут вызвать проблемы, но некоторые из них, как я обнаружил, вообще не упоминали о проблемах при правильной настройке). - в принципе, убедитесь, что нет конфликта портов).

Поэтому я установил WAMP (64-разрядную версию) на компьютер WHS и изменил настройки в httpdфайле конфигурации Apache для прослушивания через порт, 8080чтобы не было конфликта с IIS. Я установил свой файл виртуального хоста, как на компьютере с XP, только с изменением порта.

В принципе, все, кажется, работает нормально (однако, см. Обновление), кроме ...

(Оригинальный) выпуск

В то время как страницы на локальных сайтах работают нормально и все css и javascript работают, каждый файл изображения не отображается . Информация о пути является правильной, о чем свидетельствует щелчок правой кнопкой мыши и выбор View Image Info(в Firefox ... кстати, изображения не отображаются ни в одном браузере, поэтому это не ошибка браузера).

Однако я заметил, что Typeв поле информации об изображении отображается text/html, а не PNG Imageили JPEG Imageт. Д. Это информация ниже, где он показывает информацию о пути (адресе) - в этом разделе он распознает, что сам файл имеет Typeлибо Imageили Background.

Но, несмотря на этот факт, кажется, что вместо того, чтобы распознавать правильный тип mime (я предполагаю) изображения в html (на самом деле сгенерированный php html), вместо этого он пытается обработать изображение ( imgэлемент или CSS background-image) как текст, и, следовательно, ничего не давая мне! Но я не могу понять, почему. mimeФайл управления MIME-типов Apache является правильным. Страницы имеют следующие заголовки ...

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />

... но они не должны вызывать проблему (они не возникали при работе на XP, и при этом они не работают на живом сайте).

Поэтому я ищу мысли о:

  1. Является ли мой анализ MIME-типа проблемой правильной (основываясь на обновлении, возможно, нет)?
  2. Где еще можно посмотреть, что может быть причиной проблемы, и как ее исправить? Может ли это быть конфликт с IIS на WHS, и если да, то что? Может ли это быть что-то в php (это кажется маловероятным), и если да, то что? Что еще я могу проверить в Apache?

Обновленная информация (с более [связанными?] Проблемами)

Продолжая возиться, я пришел к выводу, что, по крайней мере, частично проблема заключается в изменении порта :8080. Во-первых, я понял, что не все было так хорошо, как я думал, чтобы попасть на все мои сайты. У меня есть это представление в моем c:\Windows\System32\drivers\etc\hostsфайле:

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

И это представление в моем vhostsфайле 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>

Вот поведение : site1и site4появляются, но без изображений. Другие три не появляются вообще, но дают Network Error (dns_unresolved_hostname).

Однако, если я получаю доступ к первому сайту в vhosts на компьютере WHS с помощью localhost:8080URL-адреса, тогда изображения действительно отображаются , и любой сайт, который находится первым в моем файле vhosts, также обнаруживается (что ожидается); тем не менее, он делает это, даже если это было то, чего раньше не было (поэтому, если я перехожу site2на первую позицию, он начинает «работать» через localhost:8080вызов).

Я знаю, что мои файлы изображений возвращают 403( исправлено, изначально я сказал 404 ) ошибку при доступе через test.site4.comсинтаксис в URL, и я подозреваю, что мои изображения отображаются как, text/htmlпотому что файлы возвращают эту ошибку (поэтому я не думаю, что это является проблемой типа пантомимы теперь так же, как неспособность найти изображения). Но странным является то, что пути правильные, а файлы без изображений (javascript и css) подходят хорошо.

Так что, на мой взгляд, может быть, что-то с переключателем порта в 8080. Мои проблемы сейчас:

  1. Почему мои файлы hosts и vhosts неправильно находят все сайты (есть ли какой-то другой файл, который мне нужно изменить на Windows Home Server)?
  2. На тех сайтах, для которых это работает, почему изображения не могут быть найдены (с ошибкой 403, которая, по моему мнению, «запрещена», не имеет смысла, если другим файлам в папках сайта разрешен доступ)?
  3. Почему localhost:8080доступ работает независимо от того, что связано с первыми двумя проблемами?

Некоторая дополнительная информация

Был сделан запрос на размещение файлов журнала. Однако я обнаружил, что не было никаких журналов, кроме (кажется) в тех случаях, когда я обращался через прямой localhost:8080вызов к сайту «по умолчанию».

Поэтому я отключил службы WAMP, пошел к URL-адресам и обнаружил то же поведение, что и при работе WAMP. Похоже, это указывает на то, что IIS все еще контролирует доменные имена, а не Apache, собирающий их ( может ли кто-нибудь подтвердить мое предположение? ) , И, таким образом, проблема может заключаться в том, что сам контроль над сервером WAMP передается самому.

ScottS
источник
Убедитесь, что разрешения для фактических изображений установлены так, чтобы к ним можно было получить доступ ... просто предположение.
cutrightjm
@ ekaj - я ценю предположение и проверил разрешения, но это не проблема.
Скоттс
@ ekaj - я добавил обновленную информацию к моей проблеме, которая может помочь вам придумать другое «предположение» (возможно, решение!).
ScottS
Вы уверены, что маршрутизация запросов приложений не работает? blogs.iis.net/wonyoo/archive/2008/07/09/… кажется делает то, что вы просите. Обратите внимание, что вы можете написать несколько правил, соответствующих вашим сайтам.
erikxiv
@ erikxiv - нет, я не уверен в этом. Моя проблема заключалась в том, что я нахожусь на незнакомой мне территории, поэтому я не знал, как заставить это работать, если это возможно. Я посмотрю на ссылку и вернусь к вам.
Скоттс

Ответы:

1

Возможно, у вас есть файл .htaccess, из-за которого изображения обслуживаются как text / html?

 <filesMatch "\.(htm|html|css|js|png|jpg)$">
 ForceType 'text/html; charset=UTF-8'
 </filesMatch>
Скотт К Уилсон
источник
Хорошее предложение, но только у нескольких сайтов есть .htaccessфайлы, и ни один не имеет ForceTypeв коде.
Скоттс
@ ScottWilson - я добавил обновленную информацию к моей проблеме, которая может помочь вам найти другое решение.
ScottS
0

Если вы сможете предоставить свои файлы access.log (хотя бы пару строк, показывающих статус 404 для запросов изображений), мы сможем проверить, что идет не так. Я подозреваю, что это может быть просто проблема с доменным именем, или ваш сайт может использовать абсолютные пути к изображениям (просто догадываясь ...), которые apache обрабатывает неправильно

Мартино Дино
источник
Интересно. Для моих попыток доступа нет файлов журналов, кроме тех случаев, когда я использовал прямой localhostдоступ. Итак, я отключил сервер WAMP и обнаружил, что получаю те же результаты. Казалось бы, это означает, что Apache не обрабатывает запросы с самого начала, а IIS.
Скоттс
Кстати, я набрал опечатку ранее, изображения дают 403.
ScottS
Может быть, лучше прокрутить запросы браузера и проверить, действительно ли он запрашивает это? Или проверьте журнал ошибок Apache, если он не был связан с портом или дает какие-то проблемы с адресом ...
Мартино Дино
@ MartinoDino - Спасибо за ваши предложения. Я только что обновил некоторую информацию в своем вопросе, которая, по моему мнению, сейчас является моей главной проблемой, заключающейся в том, что мой компьютер WHS даже не обрабатывает запрос для моих тестовых сайтов, а скорее прокси-сервер ISP. Если я смогу решить эту проблему, тогда я начну выяснять, действительно ли работают мои другие локальные части.
Скоттс
0

Поток IIS перенаправления на Apache содержит очень простое решение, которое идет в направлении, противоположном вашему.

Автор последней записи говорит, что перенаправления в IIS слишком ограничены, чтобы выполнять эту работу.

Используя его решение, вы настроите IIS для получения запросов от порта, отличного от 80, например 90. Затем установите Apache в качестве приемника для портов 80 и 8080 с перенаправлением порта 80 на порт 90. Очевидно, Apache удается это сделать. что IIS не может.

harrymc
источник
@ harrymc - спасибо за вклад. Это может быть полезно, однако, если вы посмотрите на мое последнее обновление (только что опубликованное), я обнаружил, что моя первая главная проблема заключается в том, что тестовые URL никогда не попадают на мой локальный компьютер, а пытаются обработать их ISP прокси. Если у вас есть предложения об обходе этого, я открыт.
ScottS
Это может все же соответствовать моему предложению: IIS может быть недостаточно умным, чтобы обнаружить, что localhost является локальным интерфейсом обратной связи, поэтому вместо этого ищите его в Интернете. Конечно, localhost никогда не будет там найден. У меня нет подходящей среды для тестирования этого, но вышеприведенная статья, кажется, говорит, что Apache выполняет работу более разумно.
Harrymc
@ harrymc - Как я уже упоминал в своем вопросе, я на самом деле не сетевой человек, поэтому у меня есть пара вопросов и мне нужно небольшое руководство. Во-первых, повлияет ли изменение моего WHS на порт 90 на работу WHS в качестве домашнего сервера? Во-вторых, ссылка, которую вы разместили, относится к попытке доступа к поддоменам, а я нет (скорее, я пытаюсь получить доступ к различным локальным доменам); так это что-то меняет? Для получения рекомендаций от связанного решения у меня есть некоторые знания Apache, поэтому я следую № 4-5, но у меня почти нулевые знания IIS, поэтому пункты № 1-3 я не знаю, как это сделать (или даже в моем случае, если я нужно сделать).
Скоттс
# 2-3, вероятно, не относятся к вашему делу и могут быть пропущены. # 1 требуется, так как это основная идея. Хитрость заключается в том, чтобы сделать Apache основным передним сервером Интернета, отвечающим за пересылку, а IIS - второстепенным и локальным, который не подключен к Интернету, кроме Apache. Может быть, эта статья может помочь для изменения порта. Если вы никогда не делали этого раньше, внимательно следите за всем, что вы изменили, на всякий случай.
harrymc
@ harrymc - После внесения изменений я даже не могу запустить свой сервер WAMP. Не уверен, почему, но в настоящее время он не позволяет провести полное тестирование, чтобы узнать, будет ли оно работать. Мне также интересно, если в первой ссылке, что- ourdomain.domто специфическое для моего компьютера или нет (или это просто произвольное имя, так как он имел дело с поддоменами ... мое должно быть localhost?). Кроме того, в первой ссылке our.ip.addessдля маршрутизации к IIS будет то же самое для сервера Apache, так как они находятся на одном компьютере (только на другом порту). Это не должно вызывать проблем, верно?
Скоттс
0

Поскольку вы отследили это до проблемы с DNS, основной результат заключается в том, что вам нужен локальный DNS-сервер, который вы можете настроить. Вы также упомянули маршрутизатор Linksys E1200 и Windows Home Server, поэтому вы можете выбрать один из двух подходов.

Во-первых, вы можете рассмотреть запуск сторонней прошивки (например, DD-WRT, OpenWRT, Tomato) на вашем маршрутизаторе. Тот, который у вас есть, использует чипсет Broadcom и должен иметь достаточную вспышку; DD-WRT перечисляет это как поддерживаемое. Больше всего меня беспокоит то, что каким-то образом стороннее сообщество разработчиков микропрограммного обеспечения маршрутизаторов перешло в такое состояние, что это похоже на попытку запустить Linux еще в начале 90-х годов. Вы можете попытаться покопаться в форумах, чтобы найти то, что вам нужно, но не доверяйте базе данных маршрутизатора на сайте DD-WRT, потому что это приведет вас к неправильным вещам. В целом, эта опция не дает мне уверенности, и если у вас нет второго доступного маршрутизатора, я не уверен, что смогу порекомендовать его, если вы не любите настраивать подобные вещи.

Во-вторых, вы можете включить RDP в WHS и включить DNS-сервер, как описано в этой ветке форума., Базовый подход, вход RDP, Панель управления, Установка и удаление программ, Установка и удаление компонентов Windows (кнопка), установите флажок DNS-сервер, вернитесь назад. В чем я не уверен, так это в том, что у вас есть консоль управления DNS, а у меня нет коробки WHS для ее тестирования. Если вы действительно получите эту консоль, она будет находиться в разделе Администрирование / DNS. Чтобы использовать его по своему усмотрению, вам нужно добавить новые зоны пересылки; для того, что вы делаете, я бы добавил зону для каждого хоста (например, добавил бы зону для www.samplesite.whothing), а затем добавил в нее запись A без указания имени, что сделает ее по умолчанию для этого хоста. зона. Другой подход заключается в добавлении зоны для samplesite.whither, затем добавлении именованных записей A (например, «www» или «mail»), но это может в конечном итоге блокировать вещи, которые вы не хотите блокировать. Более целенаправленная зона удерживает вас от воздействия на вещи, которые вы не хотите перенаправлять. Затем вы укажите все свои системы на этом поле как DNS-сервер. По умолчанию это делает свое собственное внешнее разрешение DNS полностью обходя DNS-серверы вашего интернет-провайдера; если вы хотите использовать их в качестве следующего этапа, вы можете указать их адреса в качестве серверов пересылки в свойствах DNS-сервера (щелкните правой кнопкой мыши и поищите).

В-третьих, если второй вариант не работает, а первый - вас пугает, вы можете настроить Linux-модуль внутри себя и настроить его как DNS-сервер. Существует множество инструкций о том, как это сделать; Беглый поиск обнаружил эту статью Марка Колича, которая, кажется, является приличной инструкцией сделать именно это. Если вы так склонны, это также может предложить вам ресурсы, необходимые для экспериментов с хостингом на основе Linux (если вы не занимаетесь разработкой на базе Windows, например .NET или тому подобное).

Это сравнение Википедии DNS-серверов также может быть полезным. Можно отметить Simple DNS Plus (коммерческий), Posadis (бесплатный, устаревший? 2004), MaraDNS (бесплатный, без графического интерфейса, стоит посмотреть) и Unbound (бесплатный, имеет бинарные загрузки Windows, не копал дальше) , Все они должны работать в Windows.

fencepost
источник
Спасибо за ваш ответ. Хотя это правда, что в некотором смысле это проблема DNS, я хочу, чтобы любой вызов localhost даже не заходил в DNS моего провайдера (это не должно). Кажется, «излишним» является необходимость настроить DNS локально для обработки того, что уже должно быть обработано системой автоматически. Мои запросы на локальные сайты даже не должны отправляться на DNS моего провайдера.
Скоттс
Если вы добавите соответствующие строки в локальный файл Hosts, они могут этого не делать - в XP он находился в каталоге c: \ windows \ system32 \ drivers \ etc \ hosts, не уверен, где он находится в Vista / 7 и варьируется ли он между 32- и 64-битный. Я видел некоторые приложения или ситуации с ошибками, где они могут сломаться, как отмечено здесь: fencepost.net/2009/11/dns-fails-nslookup-works-fix
fencepost
Я уже добавил эти строки в это местоположение (с самого начала), но мне было интересно, если это правильное расположение в 64-битной системе (что такое WHS).
Скоттс
Ваш вопрос побудил меня заняться еще большим копанием, и это ( sepago.de/helge/2009/06/04/… ) представляется очень актуальным.
забор
Это было интересно, но я не уверен, насколько это полезно, поскольку C:\Windows\System32\drivers\etcфайл уже был тем, который я изменил, но, похоже, он все еще не подходит для определения моих локальных сайтов. Кажется, в статье указывается, что файл используется как в 64-bitисходном, так и 32-bitв режиме перенаправления. Как это может повлиять на мою установку Apache и почему localhostигнорируется для моих локальных сайтов?
Скоттс
0

тебе нужно иметь

<directory>
</directory>

прежде чем </VirtualHost>разрешить.

что-то вроде этого

<Directory "C:\Apache24\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

я использую 192.168.1.100:80 для iis и 192.168.1.200:8080 для apache в интернет-протоколе v4 Настройки IPv4 (расширенные настройки IP) имеют 2 класса C ip 192.168.1.100 и добавляют 192.168.1.200, это также помогает в SEO из-за класса C ip адреса для 2 разных сайтов, ссылающихся друг на друга.

оборота Таде Давтян
источник