Więc używam cyfrowego oceanu i nginx. Chcę hostować wiele witryn (moich projektów), ale nie chcę kupować domeny dla każdej z nich.
Czy istnieje sposób na hostowanie wielu stron internetowych na nginx i cyfrowym oceanie podczas uzyskiwania do nich dostępu za pomocą tego samego adresu IP?
X.Y.Z.W/foo
,X.Y.Z.W/bar
)? Dlaczego nie możesz uzyskać dla nich domen? (Możesz przypisać ten sam adres IP do wielu domen)?Odpowiedzi:
Istnieją dwa sposoby na osiągnięcie tego. Albo robisz wszystko według adresu IP, z lokalizacjami podfolderów, albo będziesz musiał kupić jedną domenę, a następnie mieć wiele subdomen w tej domenie (subdomeny nie powinny nic kosztować, jeśli kupisz domenę, ale skontaktuj się z rejestratorem).
Nie radzę metody adresu IP choćby dlatego, że pamiętanie adresów IP jest bardzo złe, a jeśli próbujesz dzielić się informacjami z innymi, masz również ten sam problem z zapamiętywaniem adresu IP przez innych.
Podejście z jednym adresem IP i wieloma podfolderami bez nazwy domeny
Z jednej
nginx
strony musimy zastosować do tego „złe” podejście - jeden adres IP, wiele dokumentów i lokalizacji podfolderów. Jest to bardzo złe podejście i może powodować wiele problemów z niektórymi ramami sieciowymi.Zakładając domyślną
nginx
instalację jako bazę z repozytoriów, musimy utworzyć konfigurację witryny, aby obsłużyć każde żądanie podkatalogu projektu. Następnie musimy symlinkować go we właściwej lokalizacji.Utwórz
/etc/nginx/sites-available/my-projects
w następujący sposób (użyj tego jako szablonu / przewodnika - zakłada trzy projekty ze statycznym HTML i bez dynamicznych aplikacji internetowych w PHP, Pythonie lub podobnych, a także możesz kopiować poszczególne bloki lokalizacji i odpowiednio tworzyć nowe lokalizacje; zakłada również adres IP serwera to1.2.3.4
).Teraz zastępujemy domyślną konfigurację (usuwamy ją) i dodajemy naszą:
Następnie uruchom ponownie
nginx
usługę:Podejście z jedną domeną i wieloma subdomenami.
Z każdym
nginx
server {}
blokiem w konfiguracji musisz zdefiniować nazwę serwera i prawdopodobnie ustawić czwarty blok serwera jako „catch all” dla innych żądań.W powyższym scenariuszu mamy dwie części: domeny i subdomeny oraz konfigurację serwera.
(1): Konfiguracja DNS
Skonfiguruj DNS na swoim hoście, aby spełnić następujące warunki z rekordami DNS:
(2): Konfiguracja NGINX na serwerze (1.2.3.4)
Teraz dla twoich
nginx
konfiguracji. Zakładam, że będziesz mieć domyślne ustawienia Nginx i pakiety z repozytoriów (użyję 14.04 jako podstawowy przykład)./etc/nginx/sites-available
Najpierw zostaną umieszczone cztery pliki konfiguracyjne . Może być konieczne użyciesudo
przy tworzeniu tych plików, ponieważ dany folder jest własnościąroot
./etc/nginx/sites-available/catch-all
- będzie to „złapać wszystko” dla każdej nieważnej domeny. Lubię zwracać kod błędu HTTP 410 (BRAK).Następnie skonfigurujemy konfigurację dla twoich witryn / projektów. Zakładam jednak, że wszystkie są plikami statycznymi. Każdy z nich oznacza, że masz także różne katalogi internetowe dla każdego projektu na serwerze (różne „katalogi główne”).
/etc/nginx/sites-available/proj1.evil-projects.net
:/etc/nginx/sites-available/proj2.evil-projects.net
:/etc/nginx/sites-available/proj3.evil-projects.net
:Następnie musimy usunąć konfigurację „domyślną”
/etc/nginx/sites-enabled
i dodać własną. Znowusudo
jest tu potrzebny.Następnie ponownie uruchamiamy
nginx
proces:Po propagacji DNS witryny będą działać tak, jak powinny.
źródło