Nginx+SSL+Node.js运行环境配置教程_nginx

Nginx是一款高性能的HTTP服务器,同时也是一款高效的反向代理服务器。不像传统的服务器,Nginx是基于事件驱动的异步架构,内存占用少但是性能很好。如果你的Web应用是基于Node.js的,那么建议你考虑使用Nginx来做反向代理,因为Nginx可以非常高效地提供静态文件服务。本文的主要内容是在不同的操作系统下配置Nginx和SSL,并且搭建一个Node.js运行环境。

安装Nginx

假设你已经在服务器上安装了Node.js,下面我们来安装Nginx。

在Mac系统上安装Nginx

利用chown命令来获取访问/usr/local文件夹的权限,命令代码如下:

复制代码 代码如下:

sudo chown -R ‘username here' /usr/local

接下来的两行命令就可以安装Nginx了:

复制代码 代码如下:

brew link pcre
brew install nginx

Nginx安装完毕后,你可以用下面的命令来启动Nginx

复制代码 代码如下:

sudo nginx

最后你可以在目录/usr/local/etc/nginx/nginx.conf下看到Nginx的配置文件。

在Ubuntu上安装Nginx

如果你使用Ubuntu,那么可以用以下方式安装Nginx:

复制代码 代码如下:

sudo apt-get update
sudo apt-get install nginx

Nginx安装完成后便可自动启动。

在Windows下安装Nginx

windows版本的nginx可以在这里下载,接下来将安装包解压放到指定目录下,在cmd命令工具下运行以下代码:

复制代码 代码如下:

unzip nginx-1.3.13.zip
cd nginx-1.3.13
start nginx

同样,start nginx命令会让nginx启动完成。

现在我们已经安装完Ngnix,接下来该配置服务器了。

配置Node.js服务器

首先我们来创建一个简单的Node.js服务器,你可以在这里下载Express版本的Node.js。下载源代码后,将其解压至demoApp文件夹下,并且输入以下命令让服务器在3000端口上启动。

复制代码 代码如下:

npm install
node bin/www
1
<h2 id=”configuring-nginx”>Configuring Nginx</h2>
<p>Now let's open up Nginx config file. As I am on Mac, I can just use nano to start editing the file:</p>
1
nano /usr/local/etc/nginx/nginx.conf

如果需要,你也可以直接到文件夹下用你最喜欢的文本编辑器打开config文件,你可以在文件中找到server 配置节点,类似下面的代码:

复制代码 代码如下:

server {
listen       8080;
server_name  localhost;
….
more config goes here
}

接下来我们将对server 节点作一些符合自己需求的配置,我们需要把网站中的静态文件请求交给Nginx处理,其他的文件请求则交给Node.js后端服务器。我们将用下面的代码替换上面的server 配置节点:

复制代码 代码如下:

server {
listen       8080;
server_name  localhost;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /public {
root /usr/local/var/www;
}
}

这样我们就让Nginx在http://localhost:8080. 上监听了。location / 配置节点将告诉Nginx接收任意的请求,location 配置节点中我们用proxy_pass 指定了Node.js的后端服务器为http://localhost:3000 。

现在我们要用另外一个配置节点location /public 来告诉Nginx处理静态文件请求,其中内部的location 节点设置了根目录为/usr/local/var/www. 当然你也可以换成其他的目录。如此一来,当有类似这样的请求http://localhost:8080/public/somepath/file.html ,Nginx都会从/usr/local/var/www/public/somepath/file.html读取静态文件。

修改完配置文件后,你需要用下面的代码来重启Nginx:

Mac:

复制代码 代码如下:

sudo nginx -s stop && sudo nginx

Ubuntu:

复制代码 代码如下:

sudo service nginx restart

或者

复制代码 代码如下:

sudo /etc/init.d/nginx restart

Windows:

复制代码 代码如下:

nginx -s reload

接下来我们来用Nginx来代替Node.js提供CSS样式文件,Node.js模板用的是/public/stylesheets/style.css 下面的文件。在/usr/local/var/www/public/stylesheets 文件夹下创建一个名为style.css 的文件,Nginx将会正确地解析到它。比如你可以在CSS文件中写入以下代码:

复制代码 代码如下:

body {
padding: 50px;
font: 14px “Lucida Grande”, Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}

然后你可以登录到http://localhost:8080 下来看自己的web应用,你会发现尽管是访问Nginx服务器,但是请求都是通过真实的Node.js后端服务器处理的,只有CSS静态文件由Nginx处理。

创建SSL

网站产品做多了,你会发现需要创建SSL来保护敏感的信息。可能你第一反应会想到从证书颁发机构申请网站证书,但是你也可以创建签名证书。唯一的问题就是浏览器端会提示“该证书不可信”的警告信息,但是作为本地测试,这也就足够了。这里有一篇教程讲解了如何自己创建签名SSL证书,可以看看。

当你有了自己的证书,你就可以在Nginx上安装SSL了,修改后的配置文件,代码如下:

复制代码 代码如下:

server {
listen       8080;
listen       443 ssl;
server_name  localhost;
ssl_certificate  /etc/nginx/ssl/server.crt
ssl_certificate_key /etc/nginx/ssl/server.key
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /public {
root /usr/local/var/www;
}
}

完成了!这样当你访问https://localhost:8080 的时候SSL就可以开始工作了。这里我们默认将证书保存在/etc/nginx/ssl/server.crt 目录下。将私钥保存在/etc/nginx/ssl/server.key 目录下,你也可以改变保存的目录。

总结

本文中我们学到了如何用Nginx为Node.js做反向代理,并且配置SSL。由Nginx在前端处理静态文件请求,这可以为Node.js后端服务器大大减轻压力。自己尝试一下吧,有什么问题可以在评论中交流。

时间: 2024-11-08 17:25:46

Nginx+SSL+Node.js运行环境配置教程_nginx的相关文章

通过node-mysql搭建Windows+Node.js+MySQL环境的教程_node.js

前言 MySQL是一款常用的开源数据库产品,通常也是免费数据库的首选.查了一下NPM列表,发现Nodejs有13库可以访问MySQL,felixge/node-mysql似乎是最受关注项目,我也决定尝试用一下. 要注意名字,"felixge/node-mysql"非"node-mysql",安装部分会介绍这个小插曲! 目录 node-mysql介绍 建立MySQL测试库 node-mysql安装 node-mysql使用 1. node-mysql介绍 felixg

Win7旗舰版中的IIS配置asp.net的运行环境配置教程(图文教程+视频)_win服务器

以前弄过好多次,都没有成功,昨天晚上不知怎么地就成功了,借用我同学的一句话,这叫"灵光一闪",废话不多说了,这个成功是有图有视频有真相地哈! 这篇博文发表都三个月了,我自认为算是很详细了,可是还是很多人没有配置出来(天天有人在群里问我怎么配置),所以今天特意录成视频供大家参考.特意申明:这是配置asp.net运行坏境,不是asp,asp和asp.net是有区别的.asp.net如果还是配置不出可以问,asp就算了,我不懂asp哦!无法帮你解决. Win7旗舰版中的IIS配置asp.ne

node.js + webstorm :配置开发环境

一.配置开发环境: 1.先安装node (1).访问http://nodejs.org打开安装包,正常安装,点击next即可. 为了测试是否安装成功,打开命令提示符,输入node,则进入node.js交互模式,如图: 通过这种方式安装node.js还自动附带了npm (2).安装node.js包管理器(Express) 新开一个命令行窗口 在命令行输入 npm install -g express         Express 目录结构 t-1 目录/文件 说明 ./  根目录,我们的node

Ubuntu 16.04 64位中搭建Node.js开发环境教程_node.js

前言 首先说下本文的系统环境是:Ubuntu 16.04 64位,本文内容亲测可用, 大家可以请放心借鉴参考,下面来一起看看详细的步骤. 使用淘宝镜像 淘宝镜像官网是https://npm.taobao.org/ 使用淘宝镜像前请自行安装好 npm 和 node node 和 npm 的安装 node可以在这里下载 本文使用的是官方推荐v4.4.4长期支持版 下载并解压 node-v4.4.4-Linux-x64.tar.xz tar -xJf node-v4.4.4-linux-x64.tar

【实战】基于Nginx、Node.js和Redis的Docker工作流

本文讲的是[实战]基于Nginx.Node.js和Redis的Docker工作流,[编者的话]本文是一篇实践性很强的文章.作者通过一个完整的示例讲述了构建一个基于Nginx.Node.js.Redis的应用服务的Docker流程.推荐所有Docker使用者阅读,并根据文章实践. 在我的前一篇文章中,我已经介绍了关于容器和Docker是如何影响PaaS.微服务和云计算的.如果你刚刚接触Docker和容器,我强烈建议你先读一读我之前的文章.作为之前文章的一个延续,在本文中我仍会讲述一些Docker工

Windows系统下Node.js的简单入门教程

  这篇文章主要介绍了Windows系统下Node.js的简单入门教程,Node.js是用于后端编程的JavaScript框架,需要的朋友可以参考下 随着近日Paypal和Netflix宣告 迁移到Node.js, 服务器端Javascript平台已经证明其自身在企业领域的价值. 这对于Node来说是一小步,对于Javascript而言却是一大跨越啊! 来自.NET, Java, PHP, Ruby on Rails和更多技术领域的程序员, 所有游走于服务器端的编码者都会聚集到这个平台上. 作为

网络优化NginX和Node.js有几种办法?

译者:AlfredCheung 在搭建高吞吐量web应用这个议题上,NginX和Node.js可谓是天生一对.他们都是基于事件驱动模型而设计,可以轻易突破Apache等传统web服务器的C10K瓶颈.预设的配置已经可以获得很高的并发,不过,要是大家想在廉价硬件上做到每秒数千以上的请求,还是有一些工作要做的. 这篇文章假定读者们使用NginX的HttpProxyModule来为上游的node.js服务器充当反向代理.我们将介绍Ubuntu 10.04以上系统sysctl的调优,以及node.js应

Apache、Nginx 与 Node.js 之争 —— WordPress 与 Ghost 的性能大对决

巨头之间的终极对决:崛起的新星 Node.js 能否战胜巨人 Apache 和 Nginx? 我和你一样,都阅读过大量散布在互联网各处的意见或事实,其中有一些我认为是可靠的,而其它的可能是谣传,让人难以置信. 我读过的许多信息是相当矛盾的,有人深信 StackOverflow(比如这个和另一个),而其他人展示了一个清晰的令人惊讶的结果,这在推动我自己去做测试来验证结论的过程中扮演了重要的角色. 起初,我做了一些思想准备,我认为我可以避免自己进行实际测试来校验结论的麻烦--在我知道这一切之前我一直

为重负网络优化 Nginx 和 Node.js

在搭建高吞吐量web应用这个议题上,NginX和Node.js可谓是天生一对.他们都是基于事件驱动模型而设计,可以轻易突破Apache等传统web服务器的C10K瓶颈.预设的配置已经可以获得很高的并发,不过,要是大家想在廉价硬件上做到每秒数千以上的请求,还是有一些工作要做的. 这篇文章假定读者们使用NginX的HttpProxyModule来为上游的node.js服务器充当反向代理.我们将介绍Ubuntu 10.04以上系统sysctl的调优,以及node.js应用与NginX的调优.当然,如果