Запропонуйте Windows localhost (порт 80) переадресувати на порт 8080 для сервісу Apache


9

Останні відкриття

Коли 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 (працює під управлінням 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 (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).

Тим НЕ менше, якщо я досягаю перший сайт в віртуальний хост одночасно на машині WHS, використовуючи localhost:8080в URL, то образи дійсно з'являються , і в залежності від того сайт першим в моєму файлі ВХости також показує вгору (очікується); однак це робиться так, навіть якби це було раніше, ніж раніше (тому, якщо я переходжу site2на першу позицію, він починає "працювати" за допомогою localhost:8080дзвінка).

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

Отже, на мою думку, схоже, що це можливо щось із перемиканням порту 8080. Зараз мої проблеми:

  1. Чому мої файли хостів і vhosts неправильно знаходять усі сайти (чи є якийсь інший файл, який мені потрібно змінити на домашньому сервері Windows)?
  2. На яких сайтах він працює, чому зображення конкретно не знаходять (з помилкою 403, я вважаю, що це "заборонено", що не має сенсу, якщо до інших файлів у папках веб-сайту дозволено доступ)?
  3. Чому localhost:8080доступ працює незалежно від перших двох питань?

Деякі додаткові відомості

Для мене було подано запит на публікацію файлів журналів. Однак я виявив, що журналів не відбувається, за винятком (він з'являється) у тих випадках, коли я мав доступ через прямий localhost:8080виклик на сайт "за замовчуванням".

Тому я вимкнув послуги WAMP і перейшов до URL-адреси та виявив таку ж поведінку, що і під час запуску WAMP. Це, мабуть, вказує на те, що IIS все ще контролює доменні імена, а не Apache збирає їх (чи може хтось підтвердити моє припущення там? ) , І, таким чином, проблема може бути чимось ще з отриманням контролю над сервером WAMP.


Переконайтеся, що дозволи на фактичні зображення встановлені таким чином, щоб до них можна було отримати доступ .. лише здогадка.
cutrightjm

@ ekaj - Я ціную здогадки і перевірив дозволи, але це, мабуть, не проблема.
ScottS

@ ekaj - я додав до своєї проблеми деяку оновлену інформацію, яка може допомогти вам придумати іншу "здогадку" (можливо, рішення!).
ScottS

Ви впевнені, що маршрутизація запитів додатків не працює? blogs.iis.net/wonyoo/archive/2008/07/09/…, здається, робить те, що ви просите. Зауважте, що ви можете написати кілька правил, щоб відповідати вашим різним сайтам.
erikxiv

@ erikxiv - ні, я не впевнений у цьому. Моєю проблемою було те, що я перебуваю на незнайомій мені території, тому я не знав, як змусити її працювати, якщо можна. Я перегляну посилання і повернуся до вас.
ScottS

Відповіді:


1

У вас, можливо, є файл .htaccess, який спричиняє зображення, які подаються як текст / html?

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

Гарна пропозиція, але лише кілька сайтів мають .htaccessфайли, і жоден не містить ForceTypeкоду.
ScottS

@ ScottWilson - я додав до своєї проблеми деяку оновлену інформацію, яка може допомогти вам у пошуку іншого рішення.
ScottS

0

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


Цікаво. Немає файлів журналів для моїх спроб доступу, за винятком тих випадків, коли я використовував прямий localhostдоступ. Тому я разом відключив сервер WAMP і виявив, що отримую ті самі результати. Що, здавалося б, вказує на те, що Apache не обробляє запити для початку, але IIS є.
ScottS

До речі, я
вводив помилки

Можливо, краще прослухати запити браузера і перевірити, чи він насправді цього вимагає? Або перевірте журнал помилок apache, якщо він не вдалося прив’язатись до порту або дасть деякі проблеми з адресою ...
Martino Dino

@ MartinoDino - Дякую за ваші пропозиції. Щойно я оновив деяку інформацію у своєму запитанні, що, на мою думку, зараз головним моїм питанням є те, що мій комп'ютер WHS навіть не обробляє запит для моїх тестових сайтів, а здається, мій проксі-проксі. Якщо я можу це вирішити, я почну з’ясовувати, чи працюють інші мої місцеві частини.
ScottS

0

Нитка перенаправлення IIS на Apache містить дуже просте рішення, яке йде в зворотному напрямку до вашого.

Письменник останнього запису каже, що переадресації в IIS занадто обмежені, щоб виконувати завдання.

Використовуючи його рішення, ви налаштували IIS для отримання запитів від іншого порту, ніж 80, наприклад 90. Потім поставте Apache як приймач для обох портів 80 і 8080, з перенаправленням з порту 80 на порт 90. Очевидно, Apache це вдається зробити що IIS не може.


@ harrymc - дякую за вклад. Це може бути корисно, однак, якщо ви подивитесь на моє останнє оновлення (щойно розміщене), я виявив, що моя перша основна проблема полягає в тому, що тестові URL-адреси ніколи не роблять його на моєму локальному комп'ютері, а намагаються обробляти мій Проксі-сервер провайдера. Якщо у вас є якісь пропозиції щодо обходу цього питання, я відкритий.
ScottS

Це все ще може відповідати моїй пропозиції: IIS може бути недостатньо розумним, щоб виявити, що localhost - це локальний інтерфейс із зворотним циклом, тому шукає його замість цього в Інтернеті. Звичайно, місцевого господаря там ніколи не знайдуть. У мене немає правильного середовища для тестування цього, але, як видається, ця стаття говорить про те, що Apache робить цю роботу більш розумно.
harrymc

@ harrymc - Як я вже згадував у своєму запитанні, я насправді не є мережевою людиною, тому у мене є пара питань і мені потрібно невелике керівництво. По-перше, чи зміна мого WHS на порт 90 вплине на функціонування WHS як домашнього сервера? По-друге, посилання, яке ви розмістили, стосується спроби отримати доступ до субдоменів, тоді як я цього не роблю (скоріше я прагну отримати доступ до різних локальних доменів); так це щось змінює? Для вказівки з пов'язаного рішення я маю деякі знання Apache, тому № 4-5 я дотримуюсь, але у мене є майже zilch IIS знання, тому пункти №1-3 я не впевнений, як це зробити (або навіть у моєму випадку, якщо я потрібно робити).
ScottS

# 2-3, ймовірно, не стосуються вашої справи, і їх можна пропустити. №1 потрібно, оскільки це головна ідея. Хитрість тут полягає в тому, щоб зробити Apache головним сервером інтернету, який відповідає за пересилання, а IIS - на вторинний та локальний, який не підключений до Інтернету, крім Apache. Можливо, ця стаття може допомогти змінити порт. Якщо ви ніколи цього не робили, ретельно записуйте все, що ви змінили, на всякий випадок.
harrymc

@ harrymc - Внісши зміни, я навіть не можу запустити свій WAMP-сервер. Не впевнений чому, але в даний час це заважає пройти повне тестування, щоб знати, чи буде він працювати. Мені також цікаво, чи є, за першим посиланням, ourdomain.domщось специфічне для мого комп'ютера чи ні (чи це просто довільне ім'я, оскільки він мав справу з субдоменами ... чи має бути моїм localhost?). Крім того, у першому посиланні, our.ip.addessмаршрутизація до IIS буде однаковою для сервера Apache, як і вони на одному комп’ютері (просто інший порт). Це не повинно викликати проблем, правда?
ScottS

0

Оскільки ви відстежили його до проблеми DNS, основним результатом є те, що вам потрібен локальний DNS-сервер, який ви можете налаштувати. Ви також згадуєте маршрутизатор Linksys E1200 та домашній сервер Windows, тому ви можете скористатися двома підходами.

По-перше, ви можете розглянути можливість запуску сторонньої прошивки (наприклад, DD-WRT, OpenWRT, Tomato) на маршрутизаторі. У вас є чипсет Broadcom і повинен мати адекватний спалах; DD-WRT перераховує його як підтримуваний. Моя найбільша стурбованість полягає в тому, що якимось чином спільнота мікропрограмного забезпечення сторонніх маршрутизаторів перетворилася вниз, аж до спроб запустити Linux ще на початку 90-х. Ви можете спробувати прокопати форуми, щоб знайти те, що вам потрібно, але не довіряйте базі даних маршрутизаторів на сайті DD-WRT, оскільки це направить вас на неправильні речі. Загалом ця опція не заповнює мене впевненістю, і, якщо у вас є другий маршрутизатор, я не впевнений, я можу рекомендувати його, якщо вам не подобається налаштовувати подібні речі.

По-друге, ви можете ввімкнути RDP в WHS і включити DNS-сервер, як описано в цій темі форуму. Основний підхід, RDP в, Панель управління, Додати / Видалити програми, Додати / Видалити компоненти Windows (кнопка), встановіть прапорець DNS-сервер, поверніться назад. Я не впевнений у тому, чи отримаєте ви це консоль управління DNS, і я не маю вікна WHS, щоб перевірити це. Якщо ви дійсно отримаєте цю консоль, вона знаходиться в розділі Адміністративні інструменти / DNS. Щоб використовувати його так, як хочете, вам потрібно буде додати нові зони переадресації; для того, що ви робите, я додав би зону для кожного хоста (наприклад, додайте зону для www.samplesite.wever), а потім додайте до неї запис A без вказаного імені, що зробить це за замовчуванням для цього зона. Іншим підходом було б додати зону для sampleite.with, а потім додати записи з назвою A (наприклад, "www" або "mail"), але це може врешті-решт заблокувати речі, які ви не хочете заблокувати. Більш цільова зона не дає вам впливати на речі, які ви не хочете перенаправляти. Потім ви вкажете всі ваші системи на це поле як DNS-сервер. За замовчуванням це виконує власну зовнішню роздільну здатність DNS, повністю обходячи DNS-сервери вашого провайдера; якщо ви хочете використовувати їх в якості наступного етапу, ви можете вказати їх адреси в якості пересилачів у властивостях сервера DNS (клацніть правою кнопкою миші та поводьте навколо).

По-третє, якщо варіант Два не працює, а варіант 1 вас лякає, ви можете встановити вікно Linux всередині і налаштувати його як DNS-сервер. Існує багато інструкцій, як це зробити; побіжний пошук виявив цю статтю Марка Коліха, яка, здається, є гідною інструкцією робити саме це. Якщо ви настільки схильні, це також може запропонувати вам необхідні ресурси для експерименту з хостингом на базі Linux (якщо ви не займаєтесь розробкою на базі Windows, наприклад. NET тощо).

Це порівняння у Вікіпедії серверів DNS також може бути корисним. Серед можливих зауважень: Simple DNS Plus (комерційний), Posadis (безкоштовно, несвіжий? 2004), MaraDNS (безкоштовно, не GUI, варто подивитися), і Unbound (безкоштовно, чи має бінарне завантаження Windows, не копали далі) . Все це повинно працювати в Windows.


Спасибі за вашу відповідь. Хоча це правда, що це проблема DNS у певному сенсі, я хочу, щоб будь-який виклик localhost навіть не переходив до DNS свого провайдера (для цього не слід). Здається, "надмірно" якось доведеться локально налаштувати DNS, щоб обробляти те, що повинно вже автоматично оброблятися системою. Мої запити щодо сайтів localhost навіть не повинні надходити в мій DNS-провайдер.
ScottS

Якщо ви додасте відповідні рядки до локального файлу хостів, вони можуть не бути - у XP він був у c: \ windows \ system32 \ driver \ etc \ hosts, не впевнений, де він знаходиться у Vista / 7 та чи змінюється він між 32- і 64-розрядні. Я бачив деякі додатки або помилки, коли це може зламатися, як зазначалося тут: cablepost.net/2009/11/dns-fails-nslookup-works-fix
ограда

Я вже додав ці рядки до цього місця (з самого початку), але мені було цікаво, чи це правильне розташування в 64-бітній системі (що таке WHS).
ScottS

Ваше запитання змусило мене трохи більше копати, і це ( sepago.de/helge/2009/06/04/… ) видається дуже актуальним.
огорожа

Це було цікаво, але я не впевнений, наскільки корисний, оскільки C:\Windows\System32\drivers\etcфайл вже був таким, який я змінив, але він все ще, здається, не підбирається, наскільки визначає мої локальні сайти. Стаття, схоже, вказує на те, що файл використовується як за допомогою 64-bitвласного, так і 32-bitдля перенаправлення. Як це може вплинути на встановлення Apache і чому localhostігнорується для моїх локальних сайтів?
ScottS

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 адреси для двох різних веб-сайтів, що посилаються один на одного.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.