Deploy local nginx server to public ubuntu 16.04

I am trying to deploy a local nginx server to the public. The nginx server works as a reverse proxy in my node express application , which also runs locally on port 3000 . So I created a symbolic link from / etc / nginx / sites -available / express TO / etc / nginx / sites-enabled / express, so my configuration file is called express and looks like this.

/ etc / nginx / support sites / express

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; } } 

I deleted the default file from the site support folder and I did not change my nginx.conf file, which looks like this

/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; # } #} 

I also changed the firewall settings using ufw (a simple firewall) to allow access to http (especially nginx). The status of ufw is as follows:

 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) 

when I run load tests using wrk or loadtest (npm) everything works fine. for instance

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

so locally I can access the nginx server, but when I try to access the server from my phone (3G / 4G), I canโ€™t contact the server. What exactly did I miss?

EDIT: I'm trying to access the service using http: // PUBLIC_IP_ADDR / getCats / eng , not the local addr.

+5
source share
2 answers

Your nginx configuration looks great.

To access your server from the outside, you need a public static IP address from your ISP. Also, the ISP should not block incoming traffic on ports 80 and 443 (in case you decide to go with https).

Then you probably have a LAN like this:

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

In this case, the public IP will be assigned to the router, all other devices will have local private ips, such as 192.168.xx/24 / 10.xxx/8 / 172.16.0.0/20

You need to configure port forwarding to the private ip server from the router. Depending on the provider of the router, this function can be called a virtual server or is usually located somewhere near the WAN configuration. Set it to forward TCP port 80 to the local port of server 80, the same for 443.

You may also need to configure the server on a static ip so that the local IP address does not change

+3
source

I think you need to put

 listen *:80 

in the file / etc / nginx / sites -enabled / express

nginx listen to doc

I think that it does not listen for requests from your IP address of the public provider, as you have now.

0
source

All Articles