30
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nginx + nodejsでhttps経由のアクセスにする

Last updated at Posted at 2016-01-25

nginx + nodejsで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対応の設定
  • 接続数のリミットを増やす設定
/etc/nginx/nginx.conf
worker_rlimit_nofile 10240;
worker_connections  10240;
/etc/nginx/conf.d/ssl.conf
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側の設定と合わせる)
接続可能アドレスはローカルホストに限定したほうがいいかも

30
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?