Nginxの設定
NginxからHULFT10 Smart Proxy(Web API)またはHULFT10 Smart Proxy(WSS)に処理を振り分けるための設定について説明します。
設定は、Nginxの設定ファイル(/(導入ディレクトリー)/nginx/conf/nginx.conf)にて行います。
振り分けの設定例は以下のとおりです。
-
https 標準待ち受けポート(443)にて受信した要求を、HULFT10 Smart Proxy(Web API)またはHULFT10 Smart Proxy(WSS)へ振り分けます。
-
HULFTからの要求を任意のポートで受け、HULFT10 Smart Proxy(WSS)へ振り分けます。
-
Nginxのロードバランサー機能を使い、複数台のHULFT10 Smart Proxy(Web API)またはHULFT10 Smart Proxy(WSS)へ振り分けます。
ログの出力先となる/var/log/nginxディレクトリーは、自動では作成されません。
Nginxを起動する前に、/var/log/nginxディレクトリーを作成してください。
Web APIまたはWSSへの振り分け
https 標準待ち受けポート(443)にて受信した要求を、HULFT10 Smart Proxy(Web API)またはHULFT10 Smart Proxy(WSS)へ振り分けます。
設定ファイル(/(導入ディレクトリー)/nginx/conf/nginx.conf)
# HTTPS server
#
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# bind to api-server port
location /api/ {
proxy_pass https://sp-api-server-001:41000;
}
# bind to wss-server port
location /wss/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass https://sp-wss-server-001:42000/;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
}
|
https 標準待ち受けポート (443) にてlistenし、ssl を有効化 証明書を指定 秘密鍵を指定 REST APIの待ち受け設定は、/api/にて受け付け WebSocketの待ち受け設定は、/wss/ にて受け付け HULFT10 Smart Proxy(WSS)の待ち受けポートへ接続 |
任意のポートで受け、WSSへの振り分け
HULFTからの要求を任意のポートで受け、HULFT10 Smart Proxy(WSS)へ振り分けます。
設定ファイル(/(導入ディレクトリー)/nginx/conf/nginx.conf)
# inner port
#
# intranet | server | internet
# client -----> 30000
# 38000 -> tunnel
stream {
upstream tcp_backend {
server 127.0.0.1:38000;
}
server {
# bind loopback address or interface card address
listen 127.0.0.1:30000;
listen 172.16.41.103:30000;
# 10.0.0.0?10.255.255.255(24ビットブロック)
# 172.16.0.0?172.31.255.255(20ビットブロック)
# 192.168.0.0?192.168.255.255(16ビットブロック)
# allow 10.0.0.0/8; # class A
# allow 172.16.0.0/12; # class B
# allow 192.168.0.0/16; # class C
# allow 172.16.41.103/32; # sample
# allow 127.0.0.1/32; # sample
allow 172.16.42.0/24;
deny all;
proxy_connect_timeout 60s;
proxy_timeout 10m;
proxy_pass tcp_backend;
# access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
}
|
HULFT10 Smart Proxy(WSS)のtcp raw待ち受けポートへ接続 loopback, interface cardを指定 Web サーバー(Nginx)のstream TCP 受付ポート番号 ipv4 プライベートアドレス ipv4 プライベートアドレス(172.16.42.0/24)の範囲を許可 これ以外は拒否 |
複数のWeb APIまたはWSSへの振り分け
Nginxのロードバランサー機能を使い、複数台のHULFT10 Smart Proxy(Web API)またはHULFT10 Smart Proxy(WSS)へ振り分けます。
設定ファイル(/(導入ディレクトリー)/nginx/conf/nginx.conf)
#
# smartproxy - destination raw tcp port to wss-server
#
stream {
# bind to wss-server tcp raw port
upstream tcp_backend {
server sp-wss-server-001:30001;
server sp-wss-server-003:30001;
}
server {
# -------------------
# bind loopback address or interface card address
# -------------------
listen 0.0.0.0:40000;
# 10.0.0.0?10.255.255.255(24ビットブロック)
# 172.16.0.0?172.31.255.255(20ビットブロック)
# 192.168.0.0?192.168.255.255(16ビットブロック)
# allow 10.0.0.0/8; # class A
# allow 172.16.0.0/12; # class B
# allow 192.168.0.0/16; # class C
# allow 172.16.41.103/32; # sample
# allow 127.0.0.1/32; # sample
allow 192.168.0.0/16;
allow 172.0.0.0/8;
deny all;
proxy_connect_timeout 60s;
proxy_timeout 10m;
proxy_pass tcp_backend;
# access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
}
|
upstreamに別マシンのHULFT10 Smart Proxy(WSS)を複数台列挙 接続先は、tcp rawポート tcp rawを受けポート (40000) にてlisten Web サーバー(Nginx)のstream TCP 受付ポート番号 受け付けた要求は、proxy_pass 構文にて、tcp_backend へ渡す |
#
# smartproxy
# destination https/websocket to wss-server or api-server
# inner/output
#
# export port - 8443
# api-server port - 8080 and uri pass /api
# ex. https://example.com/api
# wss-server port - 8081 and uri pass /wss
# ex. https://example.com/wss
#
http {
include mime.types;
default_type application/octet-stream;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# bind to api-server
upstream sp-api-server {
server sp-api-server-001:41000;
server sp-api-server-003:41000;
}
# bind to wss-server
upstream sp-wss-server {
server sp-wss-server-001:42000;
server sp-wss-server-003:42000;
}
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
root html;
index index.html index.htm;
}
# bind to api-server port
location /api/ {
proxy_pass https://sp-api-server;
}
# bind to wss-server port
location /wss/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass https://sp-wss-server/;
}
}
}
|
upstream に別マシンのHULFT10 Smart Proxy(Web API)を複数台列挙 接続先は、HULFT10 Smart Proxy(Web API)の公開ポート upstream に別マシンのHULFT10 Smart Proxy(WSS)を複数台列挙 接続先は、HULFT10 Smart Proxy(WSS)の https(wss) 公開ポート https 標準待ち受けポート (443) にて listen し、ssl を有効化 証明書を指定 秘密鍵を指定 REST APIの待ち受け設定は、/api/ にて受け付け 受け付けた内容は、proxy_pass 構文を使い、転送 WebSocketの待ち受け設定は、/wss/にて受け付け WebSocketの場合は、http version 指定と upgrade を指定 受け付けた内容は、proxy_pass 構文を使い、転送 |