Ubuntu - 26.04 - Server - apache → nginx


 クラウディア


1. 概要
2. インストール
3. 起動
4. 設定
5. 参考サイト

1. 概要

 事情があって、「apache」で動作させていた、ウェブサーバを、「nginx」へ変更します。  2026年7月のことで、わたしが「nginx」をさわるのは、実は初めてのことです。  コンテンツは、すべて、リバースプロキシで、「flask」へ渡しています。

2. インストール


sudo apt update

sudo apt install nginx -y

3. 起動

 起動中の「apache」を止めて、無効化。

sudo systemctl stop apache2

sudo systemctl disable apache2
 「nginx」を有効化して、起動。

sudo systemctl enable nginx

sudo systemctl start nginx
 「nginx」の実行を確認します。

sudo systemctl status nginx

 nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Sat 2026-08-01 06:41:11 JST; 4 days ago
 Invocation: fa399466f01547c4a365bbdd075f8329
       Docs: man:nginx(8)
    Process: 303818 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUC>
    Process: 303830 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 303845 (nginx)
      Tasks: 3 (limit: 3736)
     Memory: 6.2M (peak: 7.1M)
        CPU: 1min 15.652s
     CGroup: /system.slice/nginx.service
             tq303845 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             tq303846 "nginx: worker process"
             mq303847 "nginx: worker process"

4. 設定

 いくつか、設定したい項目があったので。  「mime」に拡張子を追加。

sudo /etc/nginx/mime.types
 末尾の。

    video/x-msvideo                                  avi;
}
 のカッコの前に、下記の行を追加します。

    multipart/x-mixed-replace             			 mjpeg mjpg;
 「flask」へのリバースプロキシの設定。

sudo vi /etc/nginx/sites-available/default
 末尾の記述を以下にします。

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    location / {
        # (Apache の ProxyPass / ProxyPassReverse 相当)
        proxy_pass http://127.0.0.1:5000/;
        proxy_redirect off;

        # (Apache の ProxyPreserveHost On / RequestHeader 相当)
        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 "https";

        # (Apache の Header set 相当)
        add_header Access-Control-Allow-Origin "*" always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type" always;

        if ($request_method = 'OPTIONS') {
            return 204;
        }
    }
}
 ここで定義している証明書は、なんちゃってなのですが。  実は、運用しているのが「AWS」上で、ロードバランサに定義しているので、外部では本物の証明書が有効になっているようです。  設定内容に間違いがないか、チェックします。

sudo nginx -t
 反映。

sudo systemctl reload nginx
 外部からアクセスして、問題ないことが確認できました。

5. 参考サイト

 本ページは、「Gemini」伍長を参考にさせていただきました。

audiobook.jp
損保との違い
U-NEXT
それがだいじWi-Fi
TikTok Shop 【リピート用プログラム】
Amazonギフトカード
アフィリエイトのアクセストレード
ハイスピードプラン
earthcar(アースカー)
EaseUS
【usus ウズウズ】
JETBOY
薬屋の独り言
ベルリッツ
ネットオークションの相場、統計、価格比較といえばオークファン
5G CONNECT
サウンドハウス
健康サポート特集
葬送のフリーレン Prime Video