Ich habe versucht, eine Node-Web-App auf Port 443 auszuführen, erhalte jedoch die folgende Ausgabe: listen EACCES 0.0.0.0:443
Ufw allow 443/tcp wurde bereits ausprobiert, aber nmap zeigt 443 immer noch nicht als offenen Port an.
Auch Sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT ohne Erfolg versucht.
Jede Hilfe wird geschätzt.
Danke @exore, ich habe das Problem mit gelöst
Sudo setcap 'cap_net_bind_service = + ep' $ (readlink -f $ (welcher Knoten))
Das Problem war meines Erachtens eine manuelle Installation von node.js. Es ist standardmäßig in Ubuntus letzter Version enthalten, aber ich wusste das nicht und habe es erneut über das Terminal installiert.
Sie können hier für die gesamte Diskussion gehen.
https://Gist.github.com/firstdoit/6389682
Grüße,
EACCES bedeutet, dass Port 443 nicht überwacht werden darf. Dies liegt daran, dass Sie Ihre App nicht als Root ausführen. Ports unter 1024 sind reservierte Ports und dürfen nur von Root verwendet werden.
Der Versuch, die Firewall-Regeln zu ändern, hat keine Auswirkungen. Firewall Paket durchlassen oder stoppen. Es erlaubt niemandem, einen bestimmten Port abzuhören.
Lösung: Führen Sie Ihren Code mit Sudo aus. Dies ist jedoch ein Sicherheitsrisiko. Daher sollte Ihre App nach dem erfolgreichen Abhören so bald wie möglich zu einem anderen Benutzer wechseln (oder einen anderen Mechanismus finden, von dem ich nicht weiß, dass er Berechtigungen aufhebt).
Da dies kompliziert ist, ist eine gute Lösung
Wenn Sie SSL auf Port 443 wünschen, was normalerweise der Fall ist, sollten Sie auch Zertifikate einrichten (ein selbstsigniertes erstellen oder ein oder noch besseres kaufen, ein kostenloses Zertifikat von let's encrypt erhalten), Protokolle konfigurieren, verfügbare Chiffren usw. Das ist auch kompliziert.
beispiel für eine minimale Nginx-Konfigurationsdatei, die verbessert werden muss und funktionieren sollte (kann derzeit nicht getestet werden): server { server_name me.example.com; listen 0.0.0.0:443 ssl; ssl_certificate /etc/mycerts/fullchain.pem; ssl_certificate_key /etc/mycerts/privkey.pem; ssl_session_timeout 30m; ssl_session_cache shared:SSL:400k; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; server_tokens off; charset utf-8; location / { proxy_pass http://127.0.0.1:10443/; } }