Nodejs Ubuntu Nginx反向代理到127.0.0.1:3000配置求助,我的配置没成功

Nodejs Ubuntu Nginx反向代理到127.0.0.1:3000配置求助,我的配置没成功

6 回复

Nodejs Ubuntu Nginx 反向代理到 127.0.0.1:3000 配置求助

我正在尝试将一个运行在 127.0.0.1:3000 的 Node.js 应用程序通过 Nginx 反向代理到外部。我已经安装了 Nginx 并且启动了 Node.js 应用程序,但是当我访问服务器的 IP 地址时,无法访问到 Node.js 应用程序。

我已经尝试的配置:

/etc/nginx/sites-available/default 文件中添加了以下配置:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

问题描述:

当我访问 http://example.com 时,页面加载不出来。我在浏览器开发者工具中看到的错误信息是 ERR_CONNECTION_TIMED_OUT

求助:

请问这是什么原因?我应该如何正确配置 Nginx 来反向代理到 127.0.0.1:3000


解决方案:

首先,确保你的 Node.js 应用程序已经在 127.0.0.1:3000 上正确运行,并且可以从服务器的本地网络访问。你可以使用 curl 命令来测试,例如:

curl -I http://127.0.0.1:3000

如果返回了 HTTP 200 状态码,那么说明 Node.js 应用程序运行正常。

其次,检查你的 Nginx 配置文件是否正确。你可以尝试以下更详细的配置:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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_read_timeout 90s;  # 设置长连接超时时间
    }
}

保存配置后,记得重启 Nginx 服务以应用更改:

sudo systemctl restart nginx

最后,确保防火墙允许 80 端口的流量。你可以使用 ufw 来管理防火墙规则:

sudo ufw allow 'Nginx Full'

这样应该可以解决你遇到的问题。如果仍然有问题,请检查 Nginx 的错误日志文件 /var/log/nginx/error.log 以获取更多信息。


给一个完整示例

#Node Express Staging on Port 3000
upstream appname{
    server 127.0.0.1:3000;
}

NGINX Server Instance,PORT 80

server { listen 0.0.0.0:80; server_name appname.domain; access_log /var/log/nginx/appname;

# Gzip Compression
gzip on;
gzip_comp_level 6;
gzip_vary on;
gzip_min_length  1000;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;

# Proxy to the Node instance
location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_set_header X-NginX-Proxy true;
  proxy_pass http://localhost:3000;
  proxy_redirect off;
}

}

讨教个问题,打开http://www.yooteam.net打不开 但是打开http://www.yooteam.net:80能到nginx初始页面还是没打开我的项目 求指教!

应该可以吧,试试 server { listen 80; server_name appname.domain; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:3000; }

}

目测要nginx -s reload

Node.js on Ubuntu with Nginx Reverse Proxy to 127.0.0.1:3000 Configuration Help

Problem Description:

You are trying to configure Nginx as a reverse proxy to forward requests to your Node.js application running on 127.0.0.1:3000, but you’re facing issues.

Solution:

To set up the reverse proxy correctly, follow these steps:

  1. Install Nginx (if not already installed):

    sudo apt update
    sudo apt install nginx
    
  2. Configure Nginx:

    • Edit the Nginx configuration file for your site, typically found at /etc/nginx/sites-available/your-site-name. You can create a new configuration file or edit an existing one.

    • Add the following configuration to this file:

      server {
          listen 80;
          server_name your-domain.com; # Replace with your domain name or IP address
      
          location / {
              proxy_pass http://127.0.0.1:3000;
              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;
          }
      }
      
    • Enable the configuration by creating a symbolic link from /etc/nginx/sites-available/your-site-name to /etc/nginx/sites-enabled/.

  3. Restart Nginx to apply the changes:

    sudo systemctl restart nginx
    
  4. Test the Configuration:

    • Make sure your Node.js application is running on http://127.0.0.1:3000.
    • Try accessing your site through http://your-domain.com (replace with your actual domain or IP).
  5. Troubleshooting:

    • Check Nginx logs (/var/log/nginx/error.log) for any errors.
    • Ensure that your Node.js app is listening on 127.0.0.1:3000 and not just localhost:3000 or another interface.

By following these steps, you should be able to successfully configure Nginx as a reverse proxy to forward requests to your Node.js application.

回到顶部