合同会社BUSTERWORKS

合同会社BUSTERWORKS

ブログBLOG

Nginx リバースプロキシ入門

2019.3.1
IT

Ruby on RailsやNode.jsなどで動作するWebアプリケーションは、単体ではhttpsに対応していません。そのためNginxをリバースプロキシとしてhttpsに対応されることが多いです。今回はその方法について解説します。
なお、本手順はCentOS7を対象としています。

 Nginxのインストール

リバースプロキシとして使用するNginxのインストールをおこないます。


# yum -y install epel-release
# yum -y install --enablerepo=epel nginx
# systemctl start nginx
# systemctl enable nginx

 Firewalldの設定

以下のコマンドを入力し、Firewalldの設定を変更してhttp/httpsでのアクセスを許可します。


# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent
# firewall-cmd --add-port=3000/tcp --permanent
# firewall-cmd --reload

certbotのインストール、SSL/TLS証明書の取得

Let’s Encryptのクライアントであるcertbotをインストールし、SSL/TLS証明書の取得をおこないます。[fqdn]のところは、サーバのホスト名を入力します(事前にDNSの設定がなされている必要があります)


# curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
# chmod 700 /usr/bin/certbot-auto
# certbot-auto certonly --webroot -w /usr/share/nginx/html -d [fqdn] --email [email-address]

nginx.confの編集

/etc/nginx/nginx.confを開き、以下の通り編集します。


# vi /etc/nginx/nginx.conf

server {
listen 443 ssl;
server_name [fqdn];
ssl_certificate /etc/letsencrypt/live/[fqdn]/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/[fqdn]/privkey.pem;
root /usr/share/nginx/html;
access_log /var/log/nginx/ssl-access.log main;

location / {
proxy_set_header X-Real-IP $remote_addr;
index index.html index.htm;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}

}

Nginxをrestartします。httpsでアクセスして3000番ポートで公開しているサイトにリダイレクトされれば成功しています。


# systemctl restart nginx

TOPへ戻る