2012-04-10 13 views
16

Chcę przetestować poddomeny nginx przed przesłaniem konfiguracji na serwer. Czy mogę przetestować go na localhost? PróbujęJak testować poddomeny nginx na localhost

server { 
    listen  80; 
    server_name localhost; 

    location/{ 
     proxy_pass http://localhost:8080; 
    } 
} 

server { 
    listen  80; 
    server_name sub.localhost; 

    location/{ 
     proxy_pass http://localhost:8080/sub; 
    } 
} 

I to nie działa. Shoulld Zmieniam plik hosts, żeby działał? Ponadto po przesłaniu strony na serwer powinienem zmienić rekordy DNS i dodać sub.mydomain.com?

Odpowiedz

15

Tak, dodaj "sub.localhost 127.0.0.1" do pliku hosts. Ten sub musi zostać jakoś rozwiązany. To powinno działać.

Gdy już będziesz gotowy do wejścia do sieci, tak, dodaj rekord A lub Cname subdomeny Sub.

Kiedy używam proxy_pass, dołączam również plik proxy.conf z nginx. http://wiki.nginx.org/HttpProxyModule

+0

Tak, dziękuję, to działa. – madhead

5

Na serwer publiczny z własną nazwą domeny, wystarczy dodać kanoniczną nazwę za pomocą rekordu CNAME w konfiguracji DNS:

CNAME * example.com. 

Gdy to nastąpi, należy ustawić ustawienie Twój nginx

server_name *.example.com example.com; 

W swojej lokalnej konfiguracji możesz zachować tę samą konfigurację dla nginx, ale jeśli nie masz lokalnej konfiguracji DNS, będziesz musiał edytować swój plik/etc/hosts i dodać każdą subdomenę ręcznie. symbole wieloznaczne nie działają w pliku/etc/hosts.

127.0.0.1 abc.example.com def.example.com ghi.example.com 

Ogólnie zaleca się używanie .local jako przestrzeni nazw dla lokalnych domen.

1

W systemie operacyjnym Linux wystarczy, aby edytować jako plik sudo/etc/hosts i zmienić 127.0.0.1 localhost na 127.0.0.1 *.localhost.

Tak więc pod numerem /etc/nginx/sites-enabled/<environment>/<your_project_name> wpisz jako <subdomain>.localhost.

Ponownie uruchom usługę nginx.

$ sudo service nginx restart 

A następnie spróbuj http://<subdomain>.localhost na pasku adresu.

To działa dla mnie.

UPDATE

Moim zdaniem lepszym rozwiązaniem jest stworzenie serwera wirtualnego, który reaguje tylko subdomeny jeśli nie istnieje, w /etc/nginx/sites-enabled/development/default, jako domyślny serwer (należy pamiętać, że można określić tylko jeden serwer jako domyślny).

server { 
    listen 80 default_server; 
    root /var/www/html/errors; 
    server_name *._; 

    location/{ 
    index 404.html; 
    } 

} 

Upewnij się, że w nginx.conf (na ogół co /etc/nginx/nginx.conf) zawierają include /etc/nginx/sites-enabled/**/*; do tej pracy serwera wirtualnego. Jeśli nie, włóż go, a następnie uruchom $ sudo service nginx restart.

W tym przypadku nie trzeba wstawiać *.localhost w /etc/hosts, ale tylko localhost.