[英]How to allow http requests in Node.js Nginx?
我有一个节点应用程序(使用PM2)在运行Ubuntu的DigitalOcean Droplet上监听http://127.0.0.1:3000 。 但是,我有一个问题。 一切正常,除了我的所有http帖子请求均收到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版。 以下是安装最新版本的步骤:
sudo add-apt-repository ppa:nginx/stable
add-apt-repository
不可用,请执行以下操作:
sudo apt-get install python-software-properties
,然后重新运行第一个命令sudo add-apt-repository ppa:nginx/stable
sudo apt-get install software-properties-common
,然后重新运行第一个命令sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx
接下来,配置NginX:
/etc/nginx/
cd sites-available
touch YOUR_APP
注意:“ YOUR_APP”应替换为您希望调用Node.js应用的任何内容。 sudo vi YOUR_APP
并配置您的Web服务器以正确收听。 这是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);
就是这样! 确保还守护程序。 您可以为此使用PM2之类的东西。 希望这对像我一样处于类似位置的人有所帮助。
编辑: 这是一个很好的链接,总结了所有这些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.