web-dev-qa-db-de.com

Weiterleitung von Port 80 an 8080 mit NGINX

Ich verwende LEMP-Stack und Node JS auf meinem Debian-Server. Nginx arbeitet an Port 80 und Node JS an 8080. Ich habe eine neue Subdomain erstellt: cdn.domain.com für nodejs app. Derzeit kann ich auf die Node JS-Anwendung nur wie cdn.domain.com:8080/ zugreifen. Was ich tun möchte, ist Nginx so zu konfigurieren, dass ich, wenn ich auf cdn.domain.com eingebe, App auf Port 80 zum Laufen bringen kann. Aber ich kann nicht herausfinden, wie. 

16
heron

NGINX unterstützt WebSockets, indem ein Tunnel zwischen einem Client und einem Back-End-Server eingerichtet werden kann. Damit NGINX die Upgrade-Anforderung vom Client an den Backend-Server senden kann, müssen die Header für Upgrade und Verbindung explizit festgelegt werden. Zum Beispiel:

# WebSocket proxying
map $http_upgrade $connection_upgrade {
    default         upgrade;
    ''              close;
}


server {
    listen 80;

    # The Host name to respond to
    server_name cdn.domain.com;

    location / {
        # Backend nodejs server
        proxy_pass          http://127.0.0.1:8080;
        proxy_http_version  1.1;
        proxy_set_header    Upgrade     $http_upgrade;
        proxy_set_header    Connection  $connection_upgrade;
    }
}

Quelle: http://nginx.com/blog/websocket-nginx/

17
Tan Hong Tat

So einfach ist das

stellen Sie sicher, dass example.com in Ihre Domäne (oder IP) und 1337 in Ihren Node.js-Anwendungsport geändert wird:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_Host;
        proxy_pass         "http://127.0.0.1:1337";
    }
}

Quelle: https://eladnava.com/binding-nodejs-port-80-using-nginx/

9
Nyi Nyi

So können Sie das erreichen.

upstream {
    nodeapp 127.0.0.1:8080;
}

server {
    listen 80;

    # The Host name to respond to
    server_name cdn.domain.com;

    location /(.*) {
        proxy_pass http://nodeapp/$1$is_args$args;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $Host;
        proxy_set_header X-Real-Port $server_port;
        proxy_set_header X-Real-Scheme $scheme;
    }
}

Sie können diese Konfiguration auch verwenden, um die Last zwischen mehreren Knotenprozessen zu laden, z.

upstream {
    nodeapp 127.0.0.1:8081;
    nodeapp 127.0.0.1:8082;
    nodeapp 127.0.0.1:8083;
}

Wo Sie Ihren Knotenserver auf den Ports 8081, 8082 und 8083 in separaten Prozessen ausführen. Nginx kann den Datenverkehr zwischen diesen Serverprozessen problemlos ausgleichen.

7
vaidik

Sie können einen Upstream definieren und in proxy_pass verwenden

http://rohanambasta.blogspot.com/2016/02/redirect-nginx-request-to-upstream.html

server {  
   listen        8082;

   location ~ /(.*) {  
       proxy_pass  test_server;  
       proxy_set_header Host $Host;  
       proxy_set_header X-Real-IP $remote_addr;  
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
       proxy_set_header X-Forwarded-Proto $scheme;  
       proxy_redirect    off;  
   }  

}   

  upstream test_server  
     {  
         server test-server:8989  
}  
3
Rohan
server {
  listen 80;
  server_name example.com;

  location / {
      proxy_set_header   X-Forwarded-For $remote_addr;
      proxy_set_header   Host $http_Host;
      proxy_pass         "http://127.0.0.1:8080";
}   }
3
Ismaeel Akram

Einfach ist:

server {
    listen   80;
    server_name  p3000;
    location / {
        proxy_pass http://0.0.0.0:3000;
        include /etc/nginx/proxy_params;
    }
}
3
Dan Key

sie können dies sehr einfach tun, indem Sie Folgendes in Sudo vi /etc/nginx/sites-available/default verwenden.

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _ your_domain;

    location /health {
            access_log off;
            return 200 "healthy\n";
    }

    location / {
            proxy_pass http://localhost:8080; 
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $Host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_cache_bypass $http_upgrade;
    }
  }
1

Das hat bei mir funktioniert:

server {
  listen  80; 
  server_name example.com www.example.com;

  location / { 
    proxy_pass                          http://127.0.0.1:8080/;
    proxy_set_header Host               $Host;
    proxy_set_header X-Real-IP          $remote_addr;  
    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
  }
}

Wenn es bei Ihnen nicht funktioniert, schauen Sie sich die Protokolle unter Sudo tail -f /var/log/nginx/error.log An.

0
Vishrant