使用Nginx在Node.js服务器上反向代理?

使用Nginx在Node.js服务器上反向代理?,node.js,express,nginx,digital-ocean,Node.js,Express,Nginx,Digital Ocean,好吧,我快不知所措了。我有一个运行Angular应用程序的Express服务器。使用这家伙的教程 我的应用程序在我的Digital Ocean IP地址+端口8000上运行。我已经创建了一个upstart服务,所以它总是在运行。我还安装了Nginx,它的欢迎屏幕显示在我的DO IP地址上。所以现在我需要配置nginx,这样我就可以只使用IP地址访问我的站点 我试着做教程里那个家伙做的事,但我的不行。。。我做错了什么 这是我的设置: 我使用WinSCP将我的应用程序上载到服务器上的“/home/s

好吧,我快不知所措了。我有一个运行Angular应用程序的Express服务器。使用这家伙的教程

我的应用程序在我的Digital Ocean IP地址+端口8000上运行。我已经创建了一个upstart服务,所以它总是在运行。我还安装了Nginx,它的欢迎屏幕显示在我的DO IP地址上。所以现在我需要配置nginx,这样我就可以只使用IP地址访问我的站点

我试着做教程里那个家伙做的事,但我的不行。。。我做错了什么

这是我的设置:
我使用WinSCP将我的应用程序上载到服务器上的“/home/stuffie”,然后将名为“KamiAng.conf”的.conf文件上载到“/etc/init”文件夹中,如下图所示

**注意:app.js文件是启动我的节点服务器的文件

下面是KamiAng.conf的内容

# Goes in /etc/init/

description "Keep my site up"

start on startup
start on filesystem and started networking
stop on shutdown
respawn

chdir /home/stuffie/KamiAng
env NODE_ENV=production
env PORT=8000
exec node app.js
这很有效!当我输入“sudo start KamiAng”时,我的站点保持在IP:8000,即使我关闭了终端。就像我上面提到的,我安装了nginx,它在我的IP地址上运行

所以现在我尝试用nginx配置端口

在“/etc/nginx/conf.d/”文件夹中,我添加了一个名为“kamicon.conf”的文件 这是文件:

# Goes in /etc/nginx/conf.d/

upstream kamicon {
    server **myIP**:8000;
}

server {
    listen 0.0.0.0:80;
    server_name stuffiestephie.com www.stuffiestephie.com;

    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 Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-NginX-Proxy true;
      proxy_pass http://kamicon/;
      proxy_redirect off;
    }
 }
根据我链接到的教程,此时我应该能够输入“sudo服务nginx reload”,并使用“npm start”再次运行我的应用程序。然而,这是行不通的

在开始输入“sudo service nginx reload”之后,我输入了“npm start”,这会导致一个错误,因为我的package.json不在“/home/stuffie/”中,所以我将目录更改为“KamiAng”(package.json文件所在的位置),然后输入“npm start”,我会看到上图中的错误

我在这里失去了它。。。我做错了什么?我真的需要把这个服务器打开


非常感谢您的帮助

尝试将KamiAng.conf中的
chdir/home/stuffie/KamiAng
更改为
chdir/home/stuffie/KamiAng/
尝试将KamiAng.conf中的
chdir/home/stuffie/KamiAng
更改为
chdir/home/stuffie/KamiAng/
,我从未使用过Digital Ocean,也没有读过教程,但是我想建议改变
听0.0.0.0:80
听80和<代码>代理通行证http://kamicon/;
代理\u通行证http://kamicon:8000;(但是,
proxy\u可能通过http://www.stuffiestephie.com:8000
。您是否确保没有运行旧节点进程…执行ps并检查。看起来您可能有一个旧节点进程占用端口。Killall!您使用npm start的目的是什么?这是npm安装的等效语法吗?如果您没有定义了启动脚本,然后npm start将尝试运行node server.js,这将不起作用,因为你有app.js。尝试杀死所有进程并运行node app.js clean。应该可以。然后去找pm2。我从未使用过Digital Ocean,也没有阅读过教程,但我建议将
listen 0.0.0:80;
改为
listen 80;
proxy_passhttp://kamicon/
代理通行证http://kamicon:8000;
(但是,
proxy\u可能通过http://www.stuffiestephie.com:8000
。您是否确保没有运行旧节点进程…执行ps并检查。看起来您可能有一个旧节点进程占用端口。Killall!您使用npm start的目的是什么?这是npm安装的等效语法吗?如果您没有定义启动脚本后,npm start将尝试运行node server.js,但该操作无法运行,因为您有app.js。请尝试终止所有进程,然后运行node app.js clean。应该可以运行。然后获取pm2。
# Goes in /etc/init/

description "Keep my site up"

start on startup
start on filesystem and started networking
stop on shutdown
respawn

chdir /home/stuffie/KamiAng
env NODE_ENV=production
env PORT=8000
exec node app.js