nginxでSSLアクセラレーター

#事前準備
yumリポジトリの設定

```
# cat << EOS > /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/`uname -m`/
gpgcheck=0
enabled=1
EOS
```

firewalld無効化

```
systemctl disable firewalld
systemctl stop firewalld
```

SELinux無効化

```
vi /etc/selinux/config

-SELINUX=enforcing
+SELINUX=disabled

```

#インストールと起動
nginxをインストール

```
# yum install nginx
```
バージョンの確認

```
nginx -v
```
自動起動設定

```
systemctl enable nginx
```
起動

```
systemctl start nginx
```


デフォルトページの確認
表示の確認をする。 http://（FQDN）/
上記の index.html のデフォルトのパス
/usr/share/nginx/html/index.html
nginx の設定ファイルのパス
/etc/nginx/conf.d/default.conf



簡単なリバースプロキシ
/etc/nginx/conf.d 以下に XXX.confという命名でファイルを作成する
80 番で受けたリクエストを 8000 番に転送する

```
vi /etc/nginx/conf.d/server.conf
```

server {
     listen 80;
     # アクセス可能なIPアドレス、もしくはドメイン
     server_name hogehoge.com;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Host $http_host;
     proxy_redirect off;
     proxy_max_temp_file_size 0;
     location / {
        proxy_pass http://localhost:8000;
     }
}



nginx基本コマンド
起動

```
systemctl start nginx
```
停止

```
systemctl stop nginx
```
再起動

```
systemctl restart nginx
```
再起動しても設定ファイルが反映されない場合など

```
nginx -s reload
```
状態の確認

```
systemctl status nginx
```


SSL設定

```
su -
cd ~
openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr

Country Name (2 letter code) [XX]:（国名）
State or Province Name (full name) []:（都道府県）
Locality Name (eg, city) [Default City]:（市区町村）
Organization Name (eg, company) [Default Company Ltd]:（会社名）
Organizational Unit Name (eg, section) []:（部署名）
Common Name (eg, your name or your server's hostname) []:（FQDN）
Email Address []:（空）

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:（空）
An optional company name []:（空）

openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
```


#設定サンプル１
```
/etc/nginx/conf.d/default.conf

server {
    listen    80;
    server_name  [公開しているサーバー名];
                location / {
                                proxy_pass http://192.168.1.100; #プロキシ先サーバー
                }
                location /server-status {
                                stub_status on;
                                access_log off;
                                allow 127.0.0.1;
                                allow 192.168.1.1; #監視サーバー
                                deny all;
                }
}
　
server {
    listen    443 ssl;
    server_name  [公開しているサーバー名];
                location / {
                                proxy_set_header host              $host;
                                proxy_set_header X-Forwarded-For   $remote_addr;
                                proxy_set_header X-Forwarded-Proto https;
                                proxy_set_header X-Forwarded-Port  443;
                                # proxy_set_header Connection "keep-alive"; # header情報は適宜修正してください！ 
                                proxy_pass http://192.168.1.100; #プロキシ先サーバー
                }
                location /server-status {
                                stub_status on;
                                access_log off;
                                allow 127.0.0.1;
                                allow 192.168.1.1; #監視サーバー
                                deny all;
                }
}

80番で受けたリクエストを8080番に転送する
server {
     listen 80;
     # アクセス可能なIPアドレス、もしくはドメイン
     server_name hogehoge.com;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Host $http_host;
     proxy_redirect off;
     proxy_max_temp_file_size 0;
     location / {
        proxy_pass http://localhost:8000;
     }
}
```

#設定サンプル２

```
vi /etc/nginx/conf.d/default.conf

server {
    listen    443 ssl;
    server_name 192.168.11.111;
#    ssl on;
    ssl_certificate     /etc/nginx/conf.d/server.crt;
    ssl_certificate_key /etc/nginx/conf.d/server.key;
    ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;


    location / {
        proxy_pass http://192.168.22.222;

        #proxy_next_upstream error timeout;
        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;
        proxy_set_header X-Forwarded-Port   $remote_port;
        port_in_redirect                    off;
        add_header      Front-End-Https     on;
        #real_ip_header X-Forwarded-For;
    }
}
```