2016-08-26 10 views
5

पर स्थानीय nginx सर्वर को तैनात करें मैं को अपने स्थानीय nginx सर्वर को जनता के लिए तैनात करने की कोशिश कर रहा हूं। Nginx सर्वर रिवर्स प्रॉक्सी के रूप में मेरे नोड एक्सप्रेस ऐप पर चलता है जो स्थानीय रूप से बंदरगाह 3000 पर भी चल रहा है। इसलिए मैंने/etc/nginx/साइट्स-उपलब्ध/एक्सप्रेस टू/आदि/nginx/साइट-सक्षम/एक्सप्रेस से एक प्रतीकात्मक लिंक बनाया है, इसलिए मेरी कॉन्फ़िगरेशन फ़ाइल को एक्सप्रेस कहा जाता है और ऐसा लगता है।सार्वजनिक ginuntu 16.04

/etc/nginx/साइटों सक्षम/

upstream express_servers{ 
    server 127.0.0.1:3000; 
} 

server { 

    listen 80; 

     location/{ 
     proxy_pass http://express_servers; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
     } 

} 

मैं साइटों सक्षम फ़ोल्डर से डिफ़ॉल्ट फ़ाइल को हटा दिया है व्यक्त करने और मैं अपने nginx.conf फ़ाइल जो इस

तरह लग रहा है नहीं बदला है

/etc/nginx/nginx.conf

user www-data; 
worker_processes auto; 
pid /run/nginx.pid; 

events { 
    worker_connections 768; 
    # multi_accept on; 
} 

http { 

    ## 
    # Basic Settings 
    ## 

    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 
    # server_tokens off; 

    # server_names_hash_bucket_size 64; 
    # server_name_in_redirect off; 

    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    ## 
    # SSL Settings 
    ## 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE 
    ssl_prefer_server_ciphers on; 

    ## 
    # Logging Settings 
    ## 

    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    ## 
    # Gzip Settings 
    ## 

    gzip on; 
    gzip_disable "msie6"; 

    # gzip_vary on; 
    # gzip_proxied any; 
    # gzip_comp_level 6; 
    # gzip_buffers 16 8k; 
    # gzip_http_version 1.1; 
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 

    ## 
    # Virtual Host Configs 
    ## 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 


#mail { 
# # See sample authentication script at: 
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript 
# 
# # auth_http localhost/auth.php; 
# # pop3_capabilities "TOP" "USER"; 
# # imap_capabilities "IMAP4rev1" "UIDPLUS"; 
# 
# server { 
#  listen  localhost:110; 
#  protocol pop3; 
#  proxy  on; 
# } 
# 
# server { 
#  listen  localhost:143; 
#  protocol imap; 
#  proxy  on; 
# } 
#} 

मैं अपने आग बदल http एक्सेस (विशेष रूप से nginx) में अनुमति देने के लिए ufw (जटिल फ़ायरवॉल) के साथ दीवार सेटिंग्स। मेरे UFW स्थिति ऐसा दिखाई देता है:

Status: active 
Logging: on (low) 
Default: deny (incoming), allow (outgoing), disabled (routed) 
New profiles: skip 

    To       Action  From 
--       ------  ---- 
80/tcp (Nginx HTTP)  ALLOW IN Anywhere     
80       ALLOW IN Anywhere     
80/tcp (Nginx HTTP (v6)) ALLOW IN Anywhere (v6)    
80 (v6)     ALLOW IN Anywhere (v6) 

जब मैं wrk या loadtest (NPM) सब कुछ के साथ लोड परीक्षण चला रहा हूँ ठीक से काम करने लगता है। उदाहरण

wrk -t12 -c50 -d5s http://192.168.178.57/getCats/eng 

तो स्थानीय स्तर पर के लिए मैं nginx सर्वर तक पहुँच सकते हैं, लेकिन जब मैं अपने फोन (3G/4G) के साथ जनता से सर्वर तक पहुँचने का प्रयास, मैं सर्वर तक नहीं पहुंच सकते हैं। मुझे वास्तव में क्या याद आया?

संपादित करें: मैं http://PUBLIC_IP_ADDR/getCats/eng द्वारा सेवा तक पहुंचने का प्रयास कर रहा हूं, स्थानीय योजक नहीं।

+0

1 9 2.168.0.0/16 निजी लेन पता स्थान में है। इसलिए आप सेलर नेटवर्क के माध्यम से अपनी वेबसाइट तक नहीं पहुंच सकते हैं। अधिक जानकारी: https://en.wikipedia.org/wiki/Private_network। एक और शब्द में: अपने आईएसपी से संपर्क करें, मैं आईपी प्रकाशित करता हूं, या होस्टिंग ec2 की तरह कहीं भी होस्टिंग सेवाओं में अपनी वेबसाइट होस्ट करता हूं। –

+0

मैंने स्थानीय लोड परीक्षण के प्रूपोज़ के लिए निजी लेन पता का उपयोग किया .... वास्तव में मैं अपने सार्वजनिक आईपी पते के साथ काम कर रहा हूं। तो तुम्हारा मतलब है कि मुझे वास्तव में अपनी स्थानीय मशीन से सेवा प्रकाशित करने में सक्षम होने के लिए लाइसेंस की तरह sth खरीदने की आवश्यकता है ????? एडब्ल्यूएस ईसी 2 मेरी योजना बी है, लेकिन पहले मैं अपनी स्थानीय मशीन से सेवा को तैनात करने की कोशिश करना चाहता हूं ... –

+0

आपको http: // PUBLIC_IP_ADDRESS/getCats/eng' पर जाकर अपने फोन से अपनी वेबसाइट पर जाना होगा: डी –

उत्तर

3

आपकी nginx config पूरी तरह ठीक दिखती है।

बाहर से अपने सर्वर तक पहुंचने में सक्षम होने के लिए आपको अपने आईएसपी से एक सार्वजनिक स्थैतिक आईपी की आवश्यकता है। इसके अलावा आईएसपी को 80 और 443 बंदरगाहों में आने वाले यातायात को अवरुद्ध नहीं करना चाहिए (यदि आप https के साथ जाने का फैसला करते हैं)।

तो फिर तुम शायद इस तरह एक लैन है: इस मामले सार्वजनिक आईपी रूटर को सौंपा जाएगा में

ISP <---> Router <---> Server 
      ^
      | 
      ----> your other devices 

, अन्य सभी उपकरणों 192.168.x.x/24/10.x.x.x/8/172.16.0.0/20

आप की तरह स्थानीय निजी ips होगा राउटर से सर्वर के निजी आईपी में बंदरगाह अग्रेषण को कॉन्फ़िगर करने की आवश्यकता है। राउटर के विक्रेता के आधार पर इस सुविधा को virtual server कहा जा सकता है और ऐसा आमतौर पर WAN कॉन्फ़िगरेशन के पास कहीं भी मिलता है। स्थानीय पोर्ट 80 सर्वर और 443 के लिए सर्वर पर टीसीपी पोर्ट 80 को अग्रेषित करने के लिए इसे सेट अप करें।

इसके अलावा, आप तो यह है कि स्थानीय आईपी पते

+0

आपका समाधान पहली नजर में सही लगता है, लेकिन ऐसा लगता है कि मेरा राउटर डीएस-लाइट सुरंग का उपयोग कर रहा है, इसलिए बाहर से कनेक्शन के साथ एक समस्या है। मैं ipv6 पते के माध्यम से भी सर्वर तक नहीं पहुंच सकता: http: // [IPV6]/getCats/eng। मैंने http के माध्यम से एक्सेस की अनुमति देने के लिए राउटर पर अपनी पोर्ट सेटिंग्स बदल दी। –

0

परिवर्तन नहीं होगा मुझे लगता है कि आप अपनी फ़ाइल/आदि में

listen *:80 

डाल करने के लिए/nginx/साइटों सक्षम है स्थैतिक आईपी करने के लिए सर्वर को कॉन्फ़िगर करना पड़ सकता है/व्यक्त

nginx listen doc

मुझे लगता है कि यह अनुरोध के लिए नहीं सुन रहा है से आप सार्वजनिक आईपी आईएसपी आप अब यह है के रूप में।

+0

मैंने सोचा कि तारांकन अनावश्यक है, लेकिन इसे आजमाने के बाद भी कोई सफलता नहीं है। –

संबंधित मुद्दे