Node.js és Apache / Nginx portkonfliktusok kezelése lokális környezetben
A webfejlesztők egyik leggyakoribb bosszúsága a helyi fejlesztőkörnyezet kialakításakor jelentkezik, amikor a különböző szolgáltatások ugyanazt a hálózati portot próbálják meg lefoglalni. Tipikus példa, amikor egy Apache vagy Nginx webszerver mellett egy Node.js (Express) alkalmazást is futtatni szeretnénk lokálisan.
Alapértelmezés szerint sok rendszer a 8080-as vagy 8081-es portot rendeli a fejlesztői szerverekhez. Ha elindítunk egy Node.js alkalmazást, ami a 8080-as portot figyelné, miközben az Apache Virtual Host is erre van konfigurálva, a hírhedt EADDRINUSE (Address already in use) hibába ütközünk.
A megoldás lépései
A konfliktus feloldásának legbiztonságosabb módja, ha a lokális Apache konfigurációt áthelyezzük egy kevésbé használt egyedi portra, például a 8090-re. Ehhez módosítanunk kell az Apache konfigurációs fájlját (httpd.conf vagy a virtual hostok fájlját):
<VirtualHost *:8090>
ServerAdmin webmaster@localhost
DocumentRoot "/var/www/simplesolution"
ServerName simplesolution.local
ErrorLog "logs/simplesolution-error.log"
CustomLog "logs/simplesolution-access.log" common
</VirtualHost>
Ne felejtsük el hozzáadni a Listen 8090 utasítást sem a fő konfigurációhoz. Ezzel felszabadítjuk a 8080-as és 8081-es portokat a Node.js alkalmazásaink számára, így a két környezet zavartalanul képes egymás mellett futni.