ラズパイで作る自宅WEBサーバ:nginx編
第0回 nginx を始めよう
2026.09.06
以前、Apache Webサーバによる自宅サーバの構築方法を取り上げました。

今回は、Apache を nginx(エンジンエックス) に替えてサーバ構築を行います。
Nginxをリバースプロキシとして使い、Node.js(Express等)のバックエンドサーバーへリクエストを転送します。
セキュリティ強化(SSL化など)、静的ファイルの高速配信、サーバー負荷分散などのメリットがあります。
プロセスマネージャーの活用:
Node.jsアプリのプロセスをバックグラウンドで永続化し、クラッシュ時に自動再起動させるために PM2 などを併用するのが一般的です。
WebSocketのサポート:
Socket.ioなどのWebSocket通信もNginxを経由して正常に動作します。
SSL化:
Nginx側で Certbot などを利用してHTTPS化を一元管理できます。Node.js側で証明書を管理するよりも安全かつ簡単です。
NginxとApacheの違いは、リクエストを処理する駆動方式と得意分野にあります。

この比較表は、AIにより生成されたものですが、Apacheの仕様もモダンな nginx に近くなっています。
ではなぜ nginx を選ぶかと言えば、設定の柔軟性です。これは次回以降で徐々に解説していきます。
今後の動画で詳しく説明しますが、一例として、nginxにおいて、PHPやサーバ・サイドでjavascriptを動かす場合は下記のような設定になります。
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
client_max_body_size 50M;
client_body_buffer_size 128k;
}
location /exercise {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
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;
}
PHP-FPM(FastCGI Process Manager)は、Webサーバーから受け取ったPHPの実行要求を効率よく処理するためのプロセスマネージャーです。
Nginxはそれ単体でPHPファイルを動的に処理できません。
PHP-FPMが間に入り、FastCGIという通信規格を使ってNginxとPHPを連携させます。
PHP-FPMはあらかじめ子プロセスをメモリ上にプールさせておくため、無駄な処理を省いて高速にレスポンスを返せます。
Node.jsは、JavaScriptをサーバー上でも実行できるようにしたJavaScript動作環境です。
nginx は3000番ポートを介してローカル環境で実行しているNode.jsサーバを呼び出しています。
Node.js自体もサーバ機能を有しているので、nginx は不要と思われるかもしれませんが、
nginx はリクエストの振り分けを行うだけではありません。
nginx にHTTPS認証などのフロント機能を任せることで、システム全体を効率よく運用することができます。
Apache では、旧来、PHPを実行する仕組みとして内部モジュール mod_php が使用されてきました。
設定が簡単で処理が早いという利点がありますが、近年は非推奨となっており、こちらでも代わりにPHP-FPMを使うのが主流です。
Apacheのモジュール(mod_proxy など)を有効化し、設定ファイルにリバースプロキシの設定を追加します。
ApacheでPHP-FPMを使うには、Apacheのmod_proxy_fcgiモジュールを使用して、動的なPHPリクエストをFastCGI経由でPHP-FPMへ転送します。
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
また、Apacheでも同様、JavaScriptのコードを実行・解釈させることはできないので、
サーバー側でJavaScriptを動かしたい場合は、Apacheのリバースプロキシ機能を使って、裏で動いているNode.jsへ転送します。
ProxyPass /node/ http://localhost:3000/
ProxyPassReverse /node/ http://localhost:3000/
それでは自宅WEBサーバのシステム構成をみてみましょう

構成図の一番上にある回線終端装置は、FLET'S 光 を契約した際に付属していたルータ(RS-500KI)です。
固定電話も契約しているので、ひかり電話対応のものになっています。
※FLET'S 光NEXT ファミリー・ギガラインタイプ 5940円
回線終端装置にはブロードバンドルータの機能もあるようですが、終端装置はスルーして初期設定もしていません。
固定IPアドレスを1回線契約しているので、終端装置に直結している市販のブロードバンドルータ側での設定が現実的です。
※GMOとくとくBBフレッツ光ファミリー 固定IP付接続サービス:1,452円
●BUFFALO WiFi 無線LAN ルーター
フレッツ光回線設置時に回線終端装置一体型ルータも提供され、様々な設定もできるようですが、プロバイダとの接続設定程度を前提にしているようで、詳細設定等のマニュアルは添付されません。市販のルータを接続して設定したほうが利便性が向上すると思います。
ブロードバンドルータの仕様要件としては下記の通りですが、ブロードバンドルータと呼ばれるものはほぼ実装していると思います。
・PPPoE機能:ユーザIDとパスワードを用いて回線に接続するプロトコル
・無線LAN機能/LAN端子(有線接続)
・ポートマッピング:特定のポート番号とプライベートIPアドレスを対応させます
・IPマスカレード:複数のプライベートIPアドレスを1つのグローバルアドレスに変換し、インターネット接続を可能にします
終端装置に接続しているWAN側がグローバルIPアドレスになっています。
IPマスカレード機能を利用して、1つのグローバルIPアドレスを共有し、LAN内の複数の端末が同時にインターネットへ接続できるようにしています。
月々の通信費は 7,392円ですが、パソコンやスマホの通信と共用ですので無難な金額かもしれません。
ブロードバンドルータの内側にWEBサーバを配置し、ポートマッピングにより、http, httpsポートをWEBサーバのローカルIPアドレスに指定しています。
この構成において、外側つまりインターネット側からのログイン、ファイル転送を許可していません。
自宅で運用するので、わざわざ危険を冒して、外側からの侵入を許可する必要はありません。
ブロードバンドルータの内側にあるパソコンから設定操作やコンテンツファイルの転送を行います。
ドメイン名はお名前ドットコムで管理してもらっているので、外部からのDNS参照設定はお名前ドットコム側のナビ画面で編集していますが、
WEBサーバにローカルIPアドレスを割り振っているので、サーバー内部に持っているDNS設定にはちょっとした工夫が必要になります。
●Raspberry Pi 3 model B+


ラズパイ3のUSBは規格2.0ですので、SSDを繋いでもアクセス速度に寄与できませんが、消費電力の面で採用しています。
以前はストレージにハードディスクを使用していました。
一昔前のCPU:Celeron、メモリ512MBのWEBサーバでも個人利用では問題なかったので、ラズパイ3の仕様である、CPU:Cortex-A53(ARMv8) 1.4GHz、メモリ1GB は十分なスペックです。
ヒートシンクとファンは必須です。
本番稼働時のサーバのCPU温度はヒートシンクのみでは約52℃、冷却ファンを取り付けると39℃まで下がりました。
●Transcend mSATA SSD 256GB SATA-III 6Gb/s DDR3キャッシュ搭載 3D TLC 採用 TS256GMSA230S

・mSATA SSD 256GB
・バスインターフェース:SATA III 6Gb/s
・フラッシュ種類:3D NAND
・データ転送速度:読出し(最大) 550 MB/s : 書込み(最大) 400 MB/s
・MTBF [平均故障間隔]:1,000,000 時間
StarTech.com Raspberry Pi用USB PIB2MS1

ラズベリーパイ用USB - mSATA変換基板 ラズパイ電子工作/開発用ボード
・SATA 1.0/2.0/3.0 mSATA SSDドライブをサポート
・データ転送速度480Mbpsに対応するUSB 2.0
・mini-SATAドライブ(フルサイズ)対応
・OSに依存せず、デバイスドライバのインストールが不要
●オムロン 無停電電源装置(常時商用給電/正弦波出力) 550VA/340W BW55T

運転方式:常時商用給電方式(オフライン方式) /
定格入力電圧:AC100V /
定格入力周波数:50/60Hz±4Hz /
出力相数:単相2線(アース付) /
出力コンセント数(バックアップ):4 /
消費電力(通常/最大):10W/20W /
最大出力容量(W):340W /
最大出力容量(VA):550VA /
バッテリ容量(V/Ah):DC12V/7.8Ah /
バックアップ時間(フル負荷時):4分 /
バッテリ動作時出力電圧:100V /
バッテリ動作時出力周波数:50/60Hz±0.1Hz /
バッテリ動作時出力波形:正弦波 /
バッテリへの切り替え時間:10msec以内 /
充電時間:12 /
本体サイズ(H×W×D):165×90×291(H×W×Dmm) /
本体重量:約4.5kg
無停電電源装置は瞬間停電による機器の破損回避と、停電時の電力供給に必須です。
ラズパイの利点は消費電力が極めて少ないところです。Raspberry PI 3 model B+ の最大消費電力は、1130mA, 5.66W、ケースに取付けたファン:DC5V*0.2A=1W、USB接続SSD:5V*500mA(USB2.0規格の最大電流)=2.5W で合計で、9.16Wとなります。300W容量の無停電電源装置(UPS)を使用すると、1日程度は停電に耐えられると思われます。
システム管理者の多くは、稼働しているサーバーを停止させるような状況の変化は好まないと思います。
本番サーバのライブラリー更新は危険なので、よほどのことがない限り行わないのですが、
そうした場合に再起動のタイミングでライブラリー依存性不一致によりシステムが動かないという悪夢はみたくありません。
システム概要図では、ブロードバンドルータもUPSに接続しています。
ブロードバンドルータも無停電電源装置に繋いでいるのは、停電が長時間に及ぶ最悪の場合、ルータ経由でノートパソコンからサーバをシャットダウンしたり、
アンドロイドスマホにSSHクライアントアプリをインストールして、スマホからシャットダウンも可能です。
停電時には回線終端装置が止まるのでサーバへは外部からアクセスできませんが、極力サーバの停止・再起動は避けたいものです。
補足:USB2.0への出力制限解除
Raspberry Pi 3のUSB 2.0ポートの最大出力電流は、全ポート合計で1.2A(1200mA)です。
初期設定では合計600mAに制限されています。
/boot/config.txt に max_usb_current=1 を記述して有効化することで、最大1.2Aまで引き上げられます。
|
KEYESTUDIO Micro:bit V2ロボットスターターキット (マイクロビットなし) MakecodeとPython用
動き、光と音の使い方、障害物の検知と回避方法、線をたどり、IRリモコンとアプリでコントロールする方法を学びます。
Maqueen Lite V5 micro:bit ロボットキット STEM用(ライントレース&障害物回避)
Maqueen Lite V5 STEMロボットは、事前調整済みのライントレースアルゴリズム、耐衝撃モーター、開封即使用可能な設計で、ストレスを解消します。
たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」
「一念発起して何かを始めても、いつも三日坊主で終わってしまう」
「色んなことを先延ばしにしたまま、時間だけが過ぎていく」
そこで本書では、そんな著者が独自に開発した、
まったく新しい目標達成メソッド「100日デザイン」について、
その知識と技術を、余すところなくご紹介します。
まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。
ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。
今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。
ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。
29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!
【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。
基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。
Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説!
500以上のサンプルを掲載。実行結果も確認。
全24章の包括的なチュートリアル。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。
Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード
電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)
|