Witajcie - pytanie może nie związanie ściśle z RoR, natomiast pośrednio owszem.
Planuję wykonać aplikację korzystająca z wielu subdomen i chcę ustawić sobie wildcard dns.
Railsy subdomeny będę obsługiwał przez subdomain-fu - natomiast nie wiem jak ustawić serwer, aby działał z subdomenami - system to osx 10.5, serwer mongrel.
Próbowałem w /etc/hosts dodać linijkę
127.0.0.1 *.localhost
ale to nic nie dało (tzn. wywołanie foo.localhost:3000) nie działa
z góry dzieki za wszelką pomoc
Ustawienie w /etc/hosts wildcarda nic nie daje, bo to po prostu nie zadziała. Wyjściem jest skorzystanie z plików .pac i stworzenie konfiguracji proxy dla przeglądarki w JavaScript.
Zakładając, że chcemy obsłużyć subdomeny dla domeny *.localhost, tworzymy plik, np. ~/.proxy.pac z zawartością:
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*.localhost")) {
return "PROXY localhost";
}
return "DIRECT";
}
Następnie w ustawieniach przeglądarki (w przypadku Firefoxa będzie to Edycja->Preferencje->Zaawansowane->Sieć->Ustawienia, pole Adres URL automatycznej konfiguracji) wpisujemy ścieżkę do pliku *.pac i zatwierdzamy zmiany. Po tej operacji wszelkie żądania na dowolną subdomenę w domenie localhost będą kierowane pod tę właśnię domenę.
Problem zaczyna się pojawiać, gdy robimy aplikację, w której, np. każdy użytkownik ma subdomene postaci login.domain.com - wtedy nasz /etc/hosts rozrastałby się błyskawicznie…
no właśnie to cały mój problem - że chcę przepisywać dowolną ilość domen.
pewnie że wystarczy- jednak to rozwiązanie śmierdzi mi troszkę partyzantką - wyrobiłem w sobie nawyk wykonywania rzeczy do porządku*, dlatego wolałbym znaleźć rozwiązanie na wildcard dns.
silniejszy od tego nawyku jest jednak pragmatyzm -jeśli rozwiązanie zajełoby dużo czasu, to ustawi się wtedy tylko na serwerze produkcyjnym, a na localu zostawię te 5-10 subdomen.
Rozwiązanie mniej szybkie: zainstaluj Bind i skonfiguruj albo inny serwer DNS.
I jedno i drugie w podobny sposób ingerują w Twój system.
Rozwiązanie dla geeka: pobierz paczkę z biblioteką która jest resolverem w Twoim systemie, modyfikujesz źródełka dodając opcję rozpoznawania *.localhost, kompilujesz i instalujesz ;D. Na Ubuntu jest to paczka libc6. Na Mac OS jest trochę przerąbane ale pewnie też się da przekompilować libc ;). Ot tak sobie wymyśliłem
ok - wcześniej sprawdzalem rozwiązanie @GhandaLa - ale nie działało - powodem było wywoływanie na porcie 3000, przez co skrypt nie chwytał - ale gdy uruchomiłem railsy na porcie 80, ładnie śmiga na wildcard dns. można pewno przerobić skrypt, żeby chwytał na porcie 3000, ale skoro działa, to nie będę tego przerabiał - dzięki za §odpowiedzi