IoT+WEBのためのホームサーバ計画の実装編7。Web側。
WEB側とは、
ここで言うWEB側とは、以下を指します。
●Nginxリバースプロキシ
●Nginx Webサーバ
●WebSocketサーバ
●TCP/IPサーバ
● DB
まぁ一度、ここで書きました。
あ、DBとかは書いてませんでえしたけど^^;
ここでは、ユーザ登録とか、そもそものサーバの設定とか色んなことやりますよ。
ユーザ登録、ユーザによるアクセス関係を絵に描いてみた
まぁこんな感じで考えましたよ。
まぁごく普通の感じです。
2段階認証とかしてませんが^^;
ますザーバの設定
まず、サーバの設定ですが、ここでは以下にはあんまり触れません。
●Webサーバの設定そのものとか
●PHPの設定とか
とりあえずこれらは当然動作するものとして話を進めましょう。
順番としては、、
WEBサーバの設定➡SSLの設定➡SSLでアクセスの確認➡WebSocketのLOCALでの動作確認➡リバースプロキシしてNginx経由でwss://でのアクセス確認
という感じです。
Nginxの設定
あんまり解説はしませんが、LetsEncryptのための設定だったり、
SSLの方はリバースプロキシでlocalhost:60001へhttpで(wsで)もってっています。
server {
set $TOP /***************(WEBのTOP)
index index.php index.html;
listen 80;
server_name 【ドメイン名】
access_log $TOP/【LOG名】
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root $TOP/【documentRoot】
}
location / {
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
}
server {
set $TOP /***************(WEBのTOP)
index index.php index.html;
listen 443 ssl;
server_name 【ドメイン名】
ssl_certificate /etc/letsencrypt/live/【ドメイン名】/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/【ドメイン名】/privkey.pem;
#------------------------------------------------------
proxy_set_header Host $http_host;
access_log $TOP/ws.finred.tech.log main;
client_max_body_size 100M;
proxy_max_temp_file_size 1024M;
proxy_buffers 8 64k;
proxy_buffer_size 64k;
#------------------------------------------------------
location / {
proxy_pass http://localhost:60001;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
}
#------------------------------------------------
あとはjavascript側で、
new WebSocket(‘ws://127.0.0.1:60001’)
だったのを、
new WebSocket(‘wss://【ドメイン名】’)
ってやってみると、
はい。できてますね。
でも、リバプロしてるので、addressが127.0.0.1になってます。
LAN上でやってみると、
そう、呼び出し元がちゃんと出てますけどね。
まぁでも、WebSocketでこのIPを直接叩くこともないので、
とくにいらないっちゃいらないんですけどね。
ということで、サーバの設定、SSLの設定(書いて無くてすみません^^;)、リバースプロキシの設定、WebSocketがちゃんと動作するかのテストをしたとこで、今日はおわります^^;^^;