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

2019-10-17 20:39:36于海丽

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';