使用Nginx + Node.js实现通过HTTPS访问

使用Nginx和Node.js来通过HTTPS进行访问。

首先

为了避免使用node.js占用80或443端口而引发以下问题,还可以选择通过nginx来连接浏览器,以简化这部分的操作。

    • 1024番ポート以下はrootで起動し他ユーザーで使う場合にはプログラム内でswitchする必要がある

 

    • SSLの証明書を入れ替えるのにちゃんと入れ替え用のコードを組まないと再起動する必要が出てくること

 

    • 負荷が上がるとSSLの処理にイベントループを食われてパフォーマンスが落ちること

 

    リソースとアプリケーションサーバーのURLを共有するとルーティングの機能を組む必要があること

安装Nginx。


yum install -y http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx

制作自己署名的证明书

如果有其他单独的证明文件,请使用那个证明文件。

openssl genrsa 2048 > cert.key
openssl req -new -key cert.key > req.csr
openssl x509 -days 3650 -req -signkey cert.key < req.csr > cert.pem

nginx的配置

    • sslの設定

 

    • URLルーティングの設定

 

    • WEBSOCKET対応の設定

 

    接続数のリミットを増やす設定
worker_rlimit_nofile 10240;
worker_connections  10240;
server {
    listen 443 default ssl;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/cert.pem;
    ssl_certificate_key  /etc/nginx/ssl/cert.key;

    server_name yourdomainname;
    server_tokens off;
    ssl_prefer_server_ciphers   on;
    ssl_session_timeout  5m;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';

    index index.html;

    root /var/www;

    access_log /var/log/nginx/ssl-access.log;
    error_log /var/log/nginx/ssl-error.log;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

node.js的配置

只需使用3000端口启动,无需进行特殊加密(与nginx服务器的设置相匹配)。
最好将连接地址限定为本地主机。

广告
将在 10 秒后关闭
bannerAds