如何在 Node.js Nginx 中允许 http 请求?
How to allow http requests in Node.js Nginx?
我有一个节点应用程序(使用 PM2)在我的 DigitalOcean Droplet 运行 Ubuntu 上监听 http://127.0.0.1:3000。但是,我有一个问题。除了我的所有 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 post 都是 404。
如有任何帮助,我们将不胜感激。提前致谢。
编辑:我的 node.js 文件与其他文件一样。这是概要。
app.post('/someURL', function(req, res) {...}
app.listen(3000, "127.0.0.1");
所以我解决了!
我在我的 DigitalOcean Droplet 上 运行ning Ubuntu 14.04。问题是当我调用 sudo apt-get install nginx
时,它会自动安装 NginX 版本 1.4.6。但是,NginX 的最新稳定版本是 1.8.0 版。以下是安装最新版本的步骤:
- 添加 NginX PPA
sudo add-apt-repository ppa:nginx/stable
- 如果
add-apt-repository
不可用,请执行以下操作:
- 对于Ubuntu版本v12.04或更低:
sudo apt-get install python-software-properties
,然后重新运行第一个命令sudo add-apt-repository ppa:nginx/stable
- 对于Ubuntu大于v12.04的版本:
sudo apt-get install software-properties-common
,则重新运行第一个命令sudo add-apt-repository ppa:nginx/stable
- 现在运行更新:
sudo apt-get update
- 最后,安装NginX:
sudo apt-get install nginx
接下来,配置NginX:
- 导航到
/etc/nginx/
cd sites-available
touch YOUR_APP
注意:"YOUR_APP" 应替换为您希望给 Node.js 应用程序命名的任何名称。
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"
并在 "YOUR_APP_PORT" 中填写“3000”或任何你想要的端口
设置为收听。
应该就是了!确保也对应用程序进行守护进程。您可以为此使用 PM2 之类的东西。希望这对像我一样处于类似情况的人有所帮助。
编辑:Here 很好 link 总结了所有这些。
我有一个节点应用程序(使用 PM2)在我的 DigitalOcean Droplet 运行 Ubuntu 上监听 http://127.0.0.1:3000。但是,我有一个问题。除了我的所有 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 post 都是 404。
如有任何帮助,我们将不胜感激。提前致谢。
编辑:我的 node.js 文件与其他文件一样。这是概要。
app.post('/someURL', function(req, res) {...}
app.listen(3000, "127.0.0.1");
所以我解决了!
我在我的 DigitalOcean Droplet 上 运行ning Ubuntu 14.04。问题是当我调用 sudo apt-get install nginx
时,它会自动安装 NginX 版本 1.4.6。但是,NginX 的最新稳定版本是 1.8.0 版。以下是安装最新版本的步骤:
- 添加 NginX PPA
sudo add-apt-repository ppa:nginx/stable
- 如果
add-apt-repository
不可用,请执行以下操作:- 对于Ubuntu版本v12.04或更低:
sudo apt-get install python-software-properties
,然后重新运行第一个命令sudo add-apt-repository ppa:nginx/stable
- 对于Ubuntu大于v12.04的版本:
sudo apt-get install software-properties-common
,则重新运行第一个命令sudo add-apt-repository ppa:nginx/stable
- 对于Ubuntu版本v12.04或更低:
- 如果
- 现在运行更新:
sudo apt-get update
- 最后,安装NginX:
sudo apt-get install nginx
接下来,配置NginX:
- 导航到
/etc/nginx/
cd sites-available
touch YOUR_APP
注意:"YOUR_APP" 应替换为您希望给 Node.js 应用程序命名的任何名称。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"
并在 "YOUR_APP_PORT" 中填写“3000”或任何你想要的端口 设置为收听。
应该就是了!确保也对应用程序进行守护进程。您可以为此使用 PM2 之类的东西。希望这对像我一样处于类似情况的人有所帮助。
编辑:Here 很好 link 总结了所有这些。