Порт пересылки от 80 до 8080 с использованием NGINX

Я использую стек LEMP и Node JS на моем сервере debian. Nginx работает на порту 80 и Node JS на 8080. Я создал новый субдомен: cdn.domain.com для приложения nodejs. В настоящее время я могу получить доступ к приложению Node JS только как cdn.domain.com:8080/. Я хочу настроить Nginx так, чтобы, когда я вхожу в cdn.domain.com, я могу заставить приложение работать с портом 80. Я думаю, что это можно сделать, используя nginx вверх по течению. Но я не могу понять, как это сделать.

Ответ 1

NGINX поддерживает WebSockets, позволяя настраивать туннель между клиентом и серверным сервером. Для того, чтобы NGINX отправил запрос обновления с клиента на серверный сервер, заголовки обновления и подключения должны быть явно указаны. Например:

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

Источник: http://nginx.com/blog/websocket-nginx/

Ответ 2

Так просто, как это,

не забудьте сменить example.com на свой домен (или IP-адрес), а 8080 - на порт приложения 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:8080";
    }
}

Источник: https://eladnava.com/binding-nodejs-port-80-using-nginx/

Ответ 3

Вот как вы можете это достичь.

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

Вы также можете использовать эту конфигурацию для загрузки баланса между несколькими процессами Node следующим образом:

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

Где вы используете сервер Node на портах 8081, 8082 и 8083 в отдельных процессах. Nginx легко загрузит баланс вашего трафика среди этих серверных процессов.

Ответ 4

Простой:

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

Ответ 5

Вы можете определить восходящий поток и использовать его в 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  
}  

Ответ 6

Вы можете сделать это очень просто, используя следующую 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;
    }
  }

Ответ 7

Это сработало для меня:

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

Если это не работает, посмотрите журналы на sudo tail -f/var/log/nginx/error.log

Ответ 8

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

Ответ 9

Вы можете использовать Kong API-шлюз. Конг API-интерфейс построен поверх NGINX. Он предоставляет API, который делает обратный прокси-сервер. Вы можете указать свой URL вверх по течению. Он также предоставляет различные полезные плагины, такие как:

  • oAuth2
  • JWT
  • аутентификация
  • Аутентификация HMAC
  • Аутентификация LDAP
  • Ограничение IP
  • CORS
  • ACL
  • Динамический SSL
  • Обнаружение ботов
  • Ограничение скорости
  • Ограничение скорости ответа
  • Ограничение размера запроса
  • Завершение запроса
  • Запрос трансформатора
  • Трансформатор отклика
  • Идентификатор корреляции
  • Вход