Nginx

使用Nginx反向代理nodejs http和https

2018-02-01  本文已影响20人  RMITcoder

使用Nginx 反向代理Node , http 和 https

测试环境在阿里云Ubuntu 16.04.3 LTS
Nginx 版本 1.10.3

Nginx 安装不说了。目录的话,Ubuntu 在 /etc/nginx下

首先找到nginx.conf这货

里面有一个http{。。。}
长这样:

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;

server_names_hash_bucket_size 64;
server_name_in_redirect off;

include /etc/nginx/mime.types;
include /etc/nginx/vhost/*.conf;
default_type application/octet-stream;
# ssl on;
#下面还好多不说了反正在这里这个ssl需要注释掉

这时候在nginx 根目录下建立一个文件夹,我的叫vhost
然后在nginx.conf 里面 include住,

    include /etc/nginx/vhost/*.conf;

在这个文件夹下面建立一个xxx.conf 的配置文件即可

里面内容如下

upstream node1 {
  server [::]:3000;
  server 127.0.0.1:3000;
}
upstream node2 {
   server [::]:3001;
   server 127.0.0.1:3001;

}
underscores_in_headers on;


map $http_my_header $pool{
    default "dev1";
    condition1 "node1";
    condition2 "node2";
}
server {
    listen 443;
    listen [::]:443 ipv6only=on;
    server_name xxxxxxxxxxxx;
    access_log /var/log/nginx/xxx.log;
    ssl on;
    ssl_certificate 你的证书;
    ssl_certificate_key 你的key
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    location / {
        proxy_pass http://$pool;
        proxy_set_header X-NginX-Proxy true;
    }

  }

从上面的代码中我们可以看到我有2 个nodejs 的app
其中一个分别监听3000 和3001 端口
并且开启了ipv6的监听

然后下面那个 underscores_in_headers 默认为off 意思就是如果你的头部有下划线就忽略掉,那么很显然我不想忽略所以设置成on
接着我打算根据请求头来访问不同的nodejs 服务
就是map开头的语句啦
最后就是配置server 然后监听https的默认端口
一切搞定之后
输入 sudo nginx -t 测试一下,ok的话就可以 sudo _nginx -s reload 重启了。
这个就是nginx 反向代理nodejs 以及根据不同请求头来代理不同nodejs 的简单示范,希望对你们有帮助。

上一篇下一篇

猜你喜欢

热点阅读