it-swarm.dev

Przekierowanie portu 80 do 8080 za pomocą NGINX

Używam stosu LEMP i Node JS na moim serwerze debian. Nginx działa na porcie 80 i Node JS w 8080. Stworzyłem nową subdomenę: cdn.domain.com dla aplikacji nodejs. Obecnie mogę uzyskać dostęp do aplikacji Node JS tylko jak cdn.domain.com:8080/. Chcę skonfigurować Nginx tak, aby po wejściu do cdn.domain.com mogłem pobrać aplikację działającą na porcie 80. Myślę, że można to zrobić za pomocą nginx upstream. Ale nie wiem, jak to zrobić. 

16
heron

NGINX obsługuje WebSockets, umożliwiając skonfigurowanie tunelu między klientem a serwerem zaplecza. Aby NGINX mógł wysłać żądanie aktualizacji z klienta do serwera zaplecza, nagłówki aktualizacji i połączenia muszą być ustawione jawnie. Na przykład:

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

Źródło: http://nginx.com/blog/websocket-nginx/

17
Tan Hong Tat

Tak proste jak to,

zmień example.com na swoją domenę (lub IP), a 1337 na port aplikacji Node.js:

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

Źródło: https://eladnava.com/binding-nodejs-port-80-using-nginx/

9
Nyi Nyi

W ten sposób możesz to osiągnąć.

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

Można również użyć tej konfiguracji do równoważenia obciążenia między wieloma procesami węzłów, takimi jak:

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

Gdzie uruchamiasz serwer węzłów na portach 8081, 8082 i 8083 w oddzielnych procesach. Nginx łatwo zrównoważy ruch między tymi procesami serwera.

7
vaidik

Możesz zdefiniować upstream i użyć go w proxy_pass

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

Proste to:

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

możesz to zrobić bardzo łatwo, korzystając z następującego polecenia Sudo vi /etc/nginx/sites-available/default

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

To działało dla mnie:

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

Jeśli to nie zadziała, spójrz na dzienniki na _Sudo tail -f /var/log/nginx/error.log_

0
Vishrant