Nginx ist ein recht schmaler Webserver, der dank seiner Forward-Proxy-Eigenschaften sehr gut dazu geeignet ist, verschiedene Webserver unter einem Host zusammenzufassen.
„Für jeden Job das passende Werkzeug“ führt gern zu folgenden Strukturen auf Server und Entwicklungsumgebung:
http://localhost:8080/tomcat-project http://localhost:8081/node-project http://localhost:8082/php-project
Ein Albtraum für jeden Ajax-Entwickler. Mit Nginx lassen sich verschiedene Hosts und Ports zusammenfassen.
Nginx unter Ubuntu installieren und konfigurieren
sudo apt-get install nginx
Ähm… Fertig. Linux eben. Nun die Konfigurationdatei
/etc/nginx/sites-available/default
etwa folgendermaßen anpassen:
server { listen 80; server_name localhost; location /tomcat-project/ { proxy_pass http://127.0.0.1:8080/tomcat-project/; } location /node-project/ { proxy_pass http://127.0.0.1:8081/node-project/; } location /php-project/ { proxy_pass http://127.0.0.1:8082/php-project/; } }
Standardport des Apache ändern
Wird PHP mittels Apache ausgeliefert, muss der standardmäßig verwendete Port 80 geändert werden. Hierfür die 80 in den folgenden Dateien auf den Wunschport (im Beispiel oben etwa 8082) umstellen:
/etc/apache2/ports.conf /etc/apache2/sites-available/default /etc/apache2/sites-available/*
Abschließend Apache und Nginx neustarten:
sudo /etc/init.d/apache2 restart sudo /etc/init.d/nginx restart
Selber Host, selber Port
Nun lassen sich verschiedene Webserver (technologisch oder gar physisch getrennt) über die selbe Adresse erreichen:
http://localhost/tomcat-project http://localhost/node-project http://localhost/php-project
Das Beispiel bezieht sich lediglich auf HTTP, kann aber analog für beispielsweise HTTPS (Port 443 statt 80) konfiguriert werden.
Um hier keinen falschen Eindruck aufkommen zu lassen: Nginx kann noch weitaus mehr. So ist ein Apache unter Umständen gar nicht notwendig und PHP kann als CGI direkt ausgeführt werden. Die offizielle Dokumentation sollte einen etwas umfangreicheren Überblick liefern.