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

 更新时间:2014年09月24日 10:20:00   投稿:junjie  
这篇文章主要介绍了Nginx+SSL+Node.js运行环境配置教程,本文用反向代理的方式代理基于Node.js的Web应用,需要的朋友可以参考下

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后端服务器大大减轻压力。自己尝试一下吧,有什么问题可以在评论中交流。

相关文章

  • Nginx实现高并发的项目实践

    Nginx实现高并发的项目实践

    本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • 在Nginx服务器上屏蔽IP的一些基本配置方法分享

    在Nginx服务器上屏蔽IP的一些基本配置方法分享

    这篇文章主要介绍了在Nginx服务器上屏蔽IP的一些基本配置方法分享,包括对过多访问的IP配置脚本屏蔽等一些小技巧,的朋友可以参考下
    2015-12-12
  • Nginx 动态域名解析过程详解

    Nginx 动态域名解析过程详解

    这篇文章主要为大家介绍了Nginx 动态域名解析过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • nginx 伪静态Rewrite正则资源汇总

    nginx 伪静态Rewrite正则资源汇总

    本文给大家汇总介绍了nginx中使用rewrite伪静态正则表达式的资源,非常的全面详细,有需要的小伙伴可以参考下
    2016-08-08
  • Linux下安装配置nginx详解

    Linux下安装配置nginx详解

    本篇文章主要介绍了Linux下安装配置nginx,介绍了在Linux系统下安装配置Nginx的详细过程,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Forever+nginx部署Node站点的方法示例

    Forever+nginx部署Node站点的方法示例

    这篇文章主要介绍了Forever+nginx部署Node站点的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • tomcat在nginx中的配置方式

    tomcat在nginx中的配置方式

    文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置Nginx以代理Tomcat的8080端口,并确保80端口已开放,最后,重新加载Nginx配置并测试代理是否成功
    2024-12-12
  • Nginx为静态资源配置缓存时间的操作步骤

    Nginx为静态资源配置缓存时间的操作步骤

    最近在优化网站性能时,发现很多静态资源(比如图片、CSS 文件等)每次都会从服务器重新加载,这不仅浪费了带宽,还增加了 服务器的负载,为了解决这个问题,我研究了一下如何在 Nginx 中为静态资源配置缓存时间,下面是我的配置过程,需要的朋友可以参考下
    2025-02-02
  • 升级nginx支持HTTP/2服务端推送的方法

    升级nginx支持HTTP/2服务端推送的方法

    这篇文章主要介绍了升级nginx支持HTTP/2服务端推送的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Nginx+RTMP+nginx-http-flv-module环境搭建

    Nginx+RTMP+nginx-http-flv-module环境搭建

    本文主要介绍了Nginx+RTMP+nginx-http-flv-module环境搭建,搭建方式可用于直播、视频会议等场景,同时支持HTTP-FLV,方便在浏览器中进行播放
    2024-03-03

最新评论