如何设置Node.js和Express(MERN stack)
我是整个Node JS社区的新手,我正在尝试使用MERN(Mongo DB、Express、React、Node JS)构建一个测试应用程序。我来自LAMP堆栈(Linux、Apache、MySQL和PHP)如何设置Node.js和Express(MERN stack),node.js,reactjs,express,ubuntu,nginx,Node.js,Reactjs,Express,Ubuntu,Nginx,我是整个Node JS社区的新手,我正在尝试使用MERN(Mongo DB、Express、React、Node JS)构建一个测试应用程序。我来自LAMP堆栈(Linux、Apache、MySQL和PHP) 我已经在Ubuntu18(AWS EC2)上安装了node.js服务器,并安装了node js、Express和Mongo DB。据我所知,Express是一种类似于Apache或Nginx的web服务器吗?那么它不能取代Nginx和Apache吗?我看到一些使用Nginx和Express
<VirtualHost *:80>
DocumentRoot /var/www/html
# ...
</VirtualHost>
DocumentRoot/var/www/html
# ...
谢谢大家的帮助 只是节点js上的一个框架。NodeJS附带了它的“http”库(Express刚刚包装的那个)
假设您已经运行了npm init
和npm安装--save express
。运行服务器所需的全部内容如下:
server.js
然后运行:
node app.js
您的终端应该显示输出:“服务器在端口3000上运行!”当你打开浏览器时,它会显示“你好,世界!” 我会尽力帮你回答第二个问题。 如果要将http服务器与NodeJ一起使用,有两种可能:
- 您将使用端口80更改express listen()方法调用中的端口,如下所示:
app.listen(80, () => console.log('Server running on port 80!'))
- 如果您的应用程序是使用端口3000构建的,您将使用nginx或apache作为反向代理,将http请求从您的域的端口80转发到端口3000。
例如,使用nginx配置:
server { listen 80; server_name myapp.domain.com; location / { proxy_pass http://localhost:8080; 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; } }
希望这能对您有所帮助。谢谢,但是我如何连接我的域(example.com)而不是localhost?您是否将域名指向您的EC2实例?如果你没有这样做,那么按照这个公会的步骤来做:是的,我做到了,我得到的只是浏览器中的“拒绝连接”。谢谢你!但是需要Nginx或Apache吗?我以为Express可以处理这个问题?是的,您只能将node与Express一起使用。例如,如果您不需要使用apache或nginx来管理服务器上的其他网站或应用程序(专用、vps或其他),则只能使用带有express或其他framework的节点。请记住,端口80上只能使用一个http服务器。你可以在这篇文章中找到一些答案。您将了解到,反向代理对于性能和管理功能来说可能很有趣。
server {
listen 80;
server_name myapp.domain.com;
location / {
proxy_pass http://localhost:8080;
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;
}
}