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

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

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

С IIS, установленным обратно на порт 80, когда я вставляю его http://localhost/на компьютер WHS, он выдает мне страницу с предупреждением "Имеется проблема с сертификатом безопасности этого веб-сайта". Если я все равно нажму "Продолжить", этот URL-адрес появится https://localhost/Remote/logon?ReturnUrl=%2fremoteдля удаленного веб-доступа Windows Home Server 2011 для 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.whateverзапрос URL на порту 80и перенаправляет на свой собственный локальный хост на том же порту.

Я загрузилМаршрутизация запросов приложенийотсовет на сайте, который я нашелв исследовании, но глядя на него, я не уверен, поможет ли это или нет (я надеялся настроить некоторую переадресацию на основе URL-адресов на порт 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 могут вызвать проблемы, но несколько найденных мной сайтов упомянули, что проблем вообще не возникнет, если все настроено правильно — в основном, убедитесь, что нет конфликта портов).

Поэтому я установилВАМП(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-type (судя по обновлениям, вероятно, нет)?
  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что файлы возвращают эту ошибку (поэтому я не думаю, что это проблема типа MIME, а скорее неспособность найти изображения). Но странность в том, что пути верны, и файлы, не являющиеся изображениями (javascript и css), отображаются нормально.

Так что, по-моему, это что-то с переключением порта на 8080. Мои проблемы сейчас таковы:

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

Дополнительная информация

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

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

решение1

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

 <filesMatch "\.(htm|html|css|js|png|jpg)$">
 ForceType 'text/html; charset=UTF-8'
 </filesMatch>

решение2

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

решение3

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

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

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

решение4

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

<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 в настройках IPv4 протокола Интернета v4 (расширенные настройки IP) у меня есть 2 IP-адреса класса C 192.168.1.100 и добавляю 192.168.1.200, это также помогает в SEO, поскольку IP-адреса класса C для 2 разных веб-сайтов ссылаются друг на друга.

Связанный контент