NginxではSSL Terminateと言う、front側でSSLの検証を行ない、frontとbackendの通信はnon-SSLで行なうというロードバランスを行なうことが出来ます。

[root@nginx01 ~]# openssl req -new -x509 -sha256 -newkey rsa:2048 -days 365 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key
Generating a 2048 bit RSA private key
.......+++
....+++
writing new private key to '/etc/nginx/ssl/nginx.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Chiyoda
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test company
Organizational Unit Name (eg, section) []:System
Common Name (e.g. server FQDN or YOUR name) []:nginx01
Email Address []:test@test.com


まずは、opensslで証明書と鍵を作成します。

http {
        upstream mywebapp1 {
                server 192.168.200.2;
                server 192.168.200.3;
        }


続いて、nginx設定ファイルの編集です。
まずはupstreamで、backendのIPアドレスを記載します。

        server {
                listen 80;
                listen 443 ssl;
                server_name localhost;

                ssl on;
                ssl_certificate         /etc/nginx/ssl/nginx.pem;
                ssl_certificate_key     /etc/nginx/ssl/nginx.key;


さらに、443で待ち受け、SSLを有効化します。
作成した証明書と鍵はこちらで指定します。

                location / {
                        proxy_pass              http://mywebapp1;
                        proxy_set_header        Host    $host;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header        X-Forwarded-Proto $scheme;
                }

さらに、locationで転送先の名前、ここではupstreamで指定した名前を指定します。
backend側に渡す、proxyのヘッダーも指定します。

    server {
        listen       80;
        server_name  localhost;


backend側では普通にhttp(80)を待ち受けます。

        location ~ \.php$ {
            root           /var/www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
            include        fastcgi_params;
        }


さらに添付のようにphpも実行できるようにしています。

<?php
    header( 'Content-Type: text/plain' );
    echo 'Host: ' . $_SERVER['HTTP_HOST'] . "\n";
    echo 'Remote Address: ' . $_SERVER['REMOTE_ADDR'] . "\n";
    echo 'X-Forwarded-For: ' . $_SERVER['HTTP_X_FORWARDED_FOR'] . "\n";
    echo 'X-Forwarded-Proto: ' . $_SERVER['HTTP_X_FORWARDED_PROTO'] . "\n";
    echo 'Server Address: ' . $_SERVER['SERVER_ADDR'] . "\n";
    echo 'Server Port: ' . $_SERVER['SERVER_PORT'] . "\n\n";
?>


検証用にphpスクリプトを作成しています。

[root@nginx01 ~]# curl https://localhost/index.php -k
Host: localhost
Remote Address: 192.168.200.1
X-Forwarded-For: 127.0.0.1
X-Forwarded-Proto: https
Server Address: 192.168.200.3
Server Port: 80

[root@nginx01 ~]# curl https://localhost/index.php -k
Host: localhost
Remote Address: 192.168.200.1
X-Forwarded-For: 127.0.0.1
X-Forwarded-Proto: https
Server Address: 192.168.200.2
Server Port: 80

[root@nginx01 ~]# curl https://localhost/index.php -k
Host: localhost
Remote Address: 192.168.200.1
X-Forwarded-For: 127.0.0.1
X-Forwarded-Proto: https
Server Address: 192.168.200.3
Server Port: 80


設定ファイルを再読み込みし、phpスクリプトを実行します。
frontからbackendに転送されていることがわかります。
さらにfrontではhttpsで受け、http(80)で転送されていることもわかります。