Node.js उबंटू पर बाहरी आईपी से सुलभ नहीं है


18

मुझे यकीन है कि यह बहुत नीच है, इसलिए मुझे क्षमा करें। मैं अपने ubuntu 10.04 के पोर्ट 8080 पर एक नोड.जेएस सर्वर चलाने की कोशिश कर रहा हूं।

यहाँ सर्वर पर iptables -L का परिणाम है:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

और यहां nmap -p 8080 का परिणाम है (आईपी पते को संपादित किया गया है क्योंकि सब कुछ विस्तृत है या खुला होना चाहिए)

nmap 173.203.xxx.xxx -p 8080 -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
PORT     STATE  SERVICE    VERSION
8080/tcp closed http-proxy

8080 को धरती पर क्यों देखा जाता है? इसे जोड़ने से कोई फायदा नहीं हुआ:

iptables -A OUTPUT -p tcp  --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp  --dport 8080 -j ACCEPT

मैं वास्तव में उलझन में हूँ।

यदि यह मदद करता है, तो मैं इसे जोड़ दूँगा, लेकिन मुझे नहीं पता

 netstat -pan | grep 80
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN          16785/node      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16471/apache2

मैं अपाचे पर पोर्ट 80 से चल रही अपनी नियमित वेबसाइट तक पहुंच सकता हूं, लेकिन नोड.जेएस सर्वर बाहर से दुर्गम है। सर्वर से इसे एक्सेस करना ही ठीक काम करता है।

तो मेरा सवाल यह है कि मैं इसे डिबगिंग के बारे में कैसे बताऊंगा? वहाँ iptables कुछ बंदरगाहों को अवरुद्ध करने के अलावा कुछ और हो सकता है? मुझे कैसे पता चलेगा कि यह क्या है?

किसी भी मदद की बहुत सराहना की!


Google के माध्यम से यहां आने वालों के लिए: यदि आपने Google क्लाउड पर सेवा होस्ट की है और इस समस्या का सामना कर रहे हैं, तो पहले यह सुनिश्चित कर लें कि आपने क्लाउड फ़ायरवॉल के अपवाद नियमों के साथ-साथ ऑपरेटिंग सिस्टम फ़ायरवॉल में पोर्ट जोड़ा है
अतुल

जवाबों:


30

पिछले नेटस्टैट आउटपुट को जोड़ने के लिए धन्यवाद, यह वास्तव में मदद करता है। आप नोड से बाहर तक पहुँच नहीं सकते हैं क्योंकि यह लोकलहोस्ट आईपी यानी 127.0.0.1 पर सुन रहा है। आपको 0.0.0.0 पर सुनने के लिए नोड.जेएस को कॉन्फ़िगर करने की आवश्यकता है ताकि यह आपकी मशीन के सभी आईपी पर कनेक्शन स्वीकार कर सके।

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8080, "0.0.0.0");
console.log('Server running at http://0.0.0.0:8080/');

मुझे उस पर शक था, लेकिन इससे पहले कभी 0.0.0.0 के पार नहीं आया था, इसलिए इसकी अवहेलना की। मैंने आपका फिक्स लागू किया, और यह किया, धन्यवाद!
मिकेल ग्रामोंट

मुझे भी यह समस्या है। मैंने इस कोड का पालन किया लेकिन मेरा नोडज सर्वर अभी भी बाहर से सुलभ नहीं है।
xybrek

हा, यहाँ भी ऐसा ही है।

1
मेरे लिए काम नहीं किया
जितेंद्र पंचोली

मेरे लिए MacOS Sierra पर Node v8.1.3
Liran H

4

आपके नेटस्टैट आउटपुट के अनुसार, पोर्ट 8080 केवल 127.0.0.1 के लिए खुला है, जो कि लोकलहोस्ट है, इसलिए सर्वर के काम से पहुंचता है (जो कि लोकलहोस्ट है), लेकिन कहीं और से नहीं।

सही आउटपुट जैसा दिखना चाहिए

0.0.0.0:8080

0

मेरी भी यही समस्या थी।

मैंने निम्नलिखित किया

  1. Google क्लाउड कंसोल में आपको उन सक्षम पोर्ट की आवश्यकता होती है, जिनका उपयोग आप Nodejs के लिए कर रहे हैं
  2. उबंटू सर्वर पर समान पोर्ट को सक्षम करने के लिए निम्न लिंक का उपयोग करें https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14-04

  3. और इस आखिरी के बाद जो मैं याद कर रहा था वह नेटवर्किंग है -> फ़ायरवॉल नियम -> डिफ़ॉल्ट-अनुमति-आंतरिक -> सभी आईपी पता .0.0.0/0

इस छवि को देखें

किया हुआ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.