javascript - 如何在 Node.js Nginx 中允许 http 请求?

标签 javascript node.js ubuntu nginx

我有一个 Node 应用程序(使用 PM2)监听 http://127.0.0.1:3000在我运行 Ubuntu 的 DigitalOcean Droplet 上。但是,我有一个问题。一切正常,除了我所有的 http post 请求都收到 404 Not Found 错误。我不知道为什么。

这是我的 Nginx conf 文件的样子:

server {
    listen 0.0.0.0:80;
    root /var/www/app_folder;

    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

它加载一切正常。静态图像、CSS、html,甚至 javascript 文件。但是,我所有传出的 HTTP 帖子都是 404。

如有任何帮助,我们将不胜感激。提前致谢。

编辑:我的 node.js 文件与其他文件一样。这是概要。

app.post('/someURL', function(req, res) {...}

app.listen(3000, "127.0.0.1");

最佳答案

所以我解决了!

我在我的 DigitalOcean Droplet 上运行 Ubuntu 14.04。问题是当我调用 sudo apt-get install nginx 时,它会自动安装 NginX 1.4.6 版。但是,NginX 的最新稳定版本是 1.8.0 版。以下是安装最新版本的步骤:

  1. 添加 NginX PPA sudo add-apt-repository ppa:nginx/stable
    1. 如果 add-apt-repository 不可用,请执行以下操作:
      1. 对于 Ubuntu v12.04 或更低版本:sudo apt-get install python-software-properties,然后重新运行第一个命令 sudo add-apt-repository ppa:nginx/稳定
      2. 对于高于 v12.04 的 Ubuntu 版本:sudo apt-get install software-properties-common,然后重新运行第一个命令 sudo add-apt-repository ppa:nginx/稳定
  2. 现在运行更新:sudo apt-get update
  3. 最后,安装 NginX:sudo apt-get install nginx

接下来,配置NginX:

  1. 导航到 /etc/nginx/
  2. cd sites-available
  3. touch YOUR_APP 注意:“YOUR_APP”应替换为您希望调用 Node.js 应用的任何内容。
  4. sudo vi YOUR_APP 并配置您的网络服务器以正确监听。

以下是 Web 服务器代码示例:

server {  
    server_name your.domain.com;
    listen 80;

    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://YOUR_APP_LOCAL_IP:YOUR_APP_PORT;
        proxy_redirect off;
    }
}

在您的 Node.js 文件中,将有类似于以下的一行: app.listen(3000, "127.0.0.1");
或者这样:app.listen(3000);

  • 如果您有第一个版本,请填写“YOUR_APP_LOCAL_IP” “127.0.0.1”或任何你在 node.js 中的替代品 文件,并在“YOUR_APP_PORT”中填写“3000”或任何端口 将其设置为可以收听。
  • 如果您有第二个版本,请将“YOUR_APP_LOCAL_IP”填写为“localhost”
    并用“3000”或任何端口填写“YOUR_APP_PORT” 将其设置为可以收听。

应该是吧!确保也对应用程序进行守护进程。你可以使用类似 PM2 的东西为了那个原因。希望这对像我一样处于类似情况的人有所帮助。

编辑:Here是一个很好的链接,总结了所有这些。

关于javascript - 如何在 Node.js Nginx 中允许 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193840/

相关文章:

javascript - 我可以在 AngularJS 的过滤器中使用过滤器吗?

asp.net-mvc - 将 Visual Studio MVC 项目的页面标记为 "async = true"

angularjs - 多部分表单解析错误 - 多部分 : None 中的边界无效

linux - 在 RPI-3B+ 中安装 OV7251 驱动程序以与 ROS 一起使用

python - 在 Ubuntu 服务器上安装软件包时出现内存不足问题

javascript - ReactJS 使用 MaterialUI 处理表单错误

javascript - 来自字符串的 JSON 数组

javascript - 如何创建一个空的 JQuery 元素并填充它?

javascript - Express.js : Empty object sent along with response

cordova - Phonegap 在 Ubuntu 上找不到 ANDROID_HOME 环境变量