Получите локальный хост 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
и маршрутизация на свой собственный локальный хост на том же порту.
Я скачал Application Request Routing из подсказки на сайте, который я нашел при исследовании, но, глядя на него, я не уверен, поможет ли это или нет (я надеялся установить некоторую переадресацию на основе 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 будут вызывать проблемы, но некоторые из них, как я обнаружил, вообще не упоминали о проблемах при правильной настройке). - в принципе, убедитесь, что нет конфликта портов).
Поэтому я установил WAMP (64-разрядная версия) на компьютер WHS и изменил настройки в Apachehttpd
файл конфигурации для прослушивания в порту8080
так что не будет конфликта с IIS. Я установил свой файл виртуального хоста, как на компьютере с XP, только с изменением порта.
В принципе, все, кажется, работает нормально(однако, см. Обновление),кроме...
(Оригинальный) выпуск
В то время как страницы на локальных сайтах работают нормально, и все css и javascript работают, каждый файл изображения не отображается. Информация о пути верна, о чем свидетельствует щелчок правой кнопкой мыши и выборView Image Info
(в Firefox... кстати, изображения не отображаются ни в одном браузере, так что это не ошибка браузера).
Однако я заметил, что Type
в окне информации отображается изображение text/html
, скорее, чем PNG Image
или же JPEG Image
и т.д. Это в информации ниже, где он показывает информацию о пути (адресе) - в этом разделе он распознает, что сам файл имеет Type
или Image
или жеBackground
,
Но, несмотря на этот факт, кажется, что вместо того, чтобы распознавать правильный тип пантомимы (я предполагаю) изображения в html (на самом деле сгенерированный php html), вместо этого он пытается обработать изображение (будь то img
элемент или CSSbackground-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, и при этом они не работают на живом сайте).
Поэтому я ищу мысли о:
- Является ли мой анализ MIME-типа проблемой правильной (основываясь на обновлении, возможно, нет)?
- Где еще можно посмотреть, что может быть причиной проблемы, и как ее исправить? Может ли это быть конфликт с 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
файл:
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:8080
в URL-адресетогда появляются изображения, и любой сайт, который находится первым в моем файле vhosts, также обнаруживается (что ожидается); тем не менее, он делает это, даже если это был тот, который ранее не будет (поэтому, если я перееду site2
на первую позицию он начинает "работать" через localhost:8080
вызов).
Я знаю, что мои файлы изображений возвращают 403
(исправлено, изначально я сказал 404) ошибка при доступе через test.site4.com
синтаксис в URL, и я подозреваю, что мои изображения отображаются как text/html
потому что файлы возвращают эту ошибку (так что я не думаю, что это проблема типа пантомимы, а скорее невозможность найти изображения). Но странным является то, что пути правильные, и файлы без изображений (javascript и css) подходят хорошо.
Так что на мой взгляд кажется, что это может быть что-то с переключателем порта в 8080
, Мои проблемы сейчас:
- Почему мои файлы hosts и vhosts неправильно находят все сайты (есть ли какой-то другой файл, который мне нужно изменить на Windows Home Server)?
- На тех сайтах, для которых это работает, почему изображения не могут быть найдены (с ошибкой 403, которая, по моему мнению, "запрещена", не имеет смысла, если другим файлам в папках сайта разрешен доступ)?
- Почему
localhost:8080
Доступ к работе независимо от того, что в связи с первыми двумя проблемами?
Некоторая дополнительная информация
Был сделан запрос на размещение файлов журнала. Однако я обнаружил, что не было никаких журналов, за исключением (кажется) в тех случаях, когда я получил доступ через прямой localhost:8080
Звоните на сайт по умолчанию.
Поэтому я отключил службы WAMP, пошел к URL-адресам и обнаружил то же поведение, что и при работе WAMP. Похоже, это указывает на то, что IIS все еще контролирует доменные имена, а не Apache, собирающий их (может ли кто-нибудь подтвердить мое предположение?), И, таким образом, проблема может заключаться в том, что сам по себе контроль передается на сервер WAMP.
5 ответов
Возможно, у вас есть файл .htaccess, из-за которого изображения обслуживаются как text / html?
<filesMatch "\.(htm|html|css|js|png|jpg)$">
ForceType 'text/html; charset=UTF-8'
</filesMatch>
Поскольку вы отследили это до проблемы с 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.
Если вы сможете предоставить свои файлы access.log (хотя бы пару строк, показывающих статус 404 для запросов изображений), мы сможем проверить, что идет не так. Я подозреваю, что это может быть просто проблема с доменным именем, или ваш сайт может использовать абсолютные пути к изображениям (просто догадываясь...), которые apache обрабатывает неправильно
тебе нужно иметь
<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 разных сайтов, ссылающихся друг на друга.
Поток IIS перенаправления на Apache содержит очень простое решение, которое идет в направлении, противоположном вашему.
Автор последней записи говорит, что перенаправления в IIS слишком ограничены, чтобы выполнять эту работу.
Используя его решение, вы настроите IIS для получения запросов от порта, отличного от 80, например 90. Затем установите Apache в качестве приемника для портов 80 и 8080 с перенаправлением порта 80 на порт 90. Очевидно, Apache удается это сделать. что IIS не может.