使用NGINX将端口80转发到8080

her*_*ron 23 proxy debian nginx node.js

我在我的debian服务器上使用LEMP堆栈和Node JS.Nginx在8080上运行端口80和Node JS.我为nodejs app创建了新的子域:cdn.domain.com.目前我只能像cdn.domain.com:8080/一样访问Node JS应用程序.我想要做的是配置Nginx,这样,当我进入cdn.domain.com时,我可以让应用程序在端口80上工作.我认为可以使用nginx上游完成.但我无法弄清楚如何.

Tan*_*Tat 20

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

资料来源:http://nginx.com/blog/websocket-nginx/

  • 问题不在于websocket,只有HTTP. (5认同)

Nyi*_*Nyi 19

就像这样简单,

确保将example.com更改为您的域(或IP),并将1337更改为您的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";
    }
}
Run Code Online (Sandbox Code Playgroud)

资料来源:https://eladnava.com/binding-nodejs-port-80-using-nginx/


小智 8

您可以通过使用以下内容轻松做到这一点 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;
    }
  }
Run Code Online (Sandbox Code Playgroud)


vai*_*dik 7

这就是你如何实现这一目标的方法.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用此配置在多个节点进程之间进行负载平衡,如下所示:

upstream {
    nodeapp 127.0.0.1:8081;
    nodeapp 127.0.0.1:8082;
    nodeapp 127.0.0.1:8083;
}
Run Code Online (Sandbox Code Playgroud)

您在不同进程中的端口8081,8082和8083上运行节点服务器的位置.Nginx可以轻松地在这些服务器进程之间平衡您的流量.


Dan*_*hka 7

简单的是:

server {
    listen   80;
    server_name  p3000;
    location / {
        proxy_pass http://0.0.0.0:3000;
        include /etc/nginx/proxy_params;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 支持包含显然要使用的`/ etc / nginx / proxy_params`。您可以通过使用cdn.domain.com而不是p3000来使答案更清晰。但这在我的情况下效果很好,我想知道为什么所有其他答案都建议使用“上游”(现在必须检查一下……)。 (2认同)