tavis nörttimaailmassa

EksisONE - artikkeleita ja ohjeita nörttimaailmasta

bind() to 104.248.141.204:80 failed (98: Address already in use)

Minulla on tätä kirjoitettaessa ollut Nginx fronttina terminoimassa SSL: ta ja HTTP/2:ta ennen Varnishia ja sen takana olevaa Apachea. Omalla tavallaan Nginx on vaikeampi kuin Apache2, mutta toisaalla taasen helpompi. Se on toiminut täysin moitteetta, mutta kerran törmäsin mystiseen virheeseen, kun uusi virtual host antoikin error 404.  Yritin siirtää Monitia omalle alidomainilleen, eikä se onnistunut. Siirsin sen takaisin alkuperäiseen domainiin hakemistoksi, ja taas tuli error 404.

Aukaisin Nginxin error.login. Omalla alidomainillaan virheet olivat tällaisia:

[emerg] 588321#588321: bind() to 104.248.141.204:80 failed (98: Address already in use)

 

Kun siirsin Monitin takaisin hakemistoksi, niin virhe muuttui:

[error] 588323#588323: *1151 directory index of "/var/www/matomo/monit/" is forbidden, 
client: 85.76.75.38, server: stats.eksis.eu, request: "GET /monit/ HTTP/2.0", host: "stats.eksis.eu"

Jos hain Monitin suoraan IP-osoitteella portista 2812, niin se toimi

Metsästin pitkään kirjoitusvirhettä, vaikka nginx -t päästi virheittä läpi. Varmistin mm. komennolla netstat -tlnp | grep 80 että mitään omituisia päällekkäisyyksiä ei ollut – eikä ollut. Myös ping meni kauniisti ja viivyttelemättä läpi.

Kuten aina, niin vasta sitten tein sen mikä olisi pitänyt tehdä ensimmäisenä: googletin virheen. Selvisi, että samaa ongelmaa on ollut muillakin ja suunnilleen niin kauan kun Nginx on ollut markkinoilla. Kukaan ei tiedä syytä, mutta Nginx vain menee solmuun.

Minä pääsin helpolla, sillä en vain saanut muutoksia menemään läpi. Muilla oli Nginx jopa kieltäytynyt juttelemasta ulkomaailman kanssa.

Ratkaisu on helppo ja tietomaailmalle tyypillinen: uudelleenkäynnistys. Osa oli ensin katkaissut yhteydet porttiin 80 komennolla fuser -k 80/tcp mutta minä selvisin vähimmällä mahdollisella vaivalla:

systemctl stop nginx
systemctl start nginx