使用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服务器的设置相匹配)。
最好将连接地址限定为本地主机。