ngix: インストールと設定 (ubuntu server)

ubuntu server 24.04 でのインストールと設定です

  • nginx をインストールして basic 認証を設定する手順
  • 設定ファイルや初期ディレクトリの場所など

nginxインストールと起動確認

まずインストールして起動します。

apt update
apt install nginx
systemctl enable nginx
systemctl start nginx

ブラウザで http://[サーバーIP] にアクセスして
「Welcome to nginx」が出ればインストールOKです。


ファイアウォール(ufw)設定(必要なら)

確認方法

ufw status

ファイアウォールの設定

ufw allow 'Nginx Full'

だけでOKです。


サーバ情報漏洩対策

デフォルトだとサーバヘッダーに「nginx/1.24.0」みたいな情報が出ます。
これを隠しましょう。

  1. 設定ファイルを編集します。
vi /etc/nginx/nginx.conf

  1. http { ブロック内に次を追加します。
server_tokens off;
  1. 保存後、nginx再起動
systemctl restart nginx

これでサーババージョンがレスポンスヘッダーから消えます。


Basic認証を設定(認証ユーザーだけアクセス許可)

一般公開を防ぎ、ID/PASS認証したユーザーだけ見れるようにします。

  1. 認証用パスワードファイルを作成

まず apache2-utils をインストール(nginxでもこれを使います)。

apt install apache2-utils

次に、認証ファイルを作成(たとえば /etc/nginx/.htpasswd

htpasswd -c /etc/nginx/.htpasswd username

※ここで任意のユーザー名とパスワードを設定
(例: ユーザー名をtestuserとすると、プロンプトが出てパスワード設定できます)

注意: -cは最初だけつける。2人目以降は不要(上書きされるので)。


  1. nginx設定に認証設定を追加

サーバの設定ファイル(例: /etc/nginx/sites-available/default)を編集します。

vi /etc/nginx/sites-available/default

server {} ブロックの location / の中に、次を追加します。

location / {
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    
    # もともとの設定(例: index.htmlを返す)もここに置く
    try_files $uri $uri/ =404;
}
  1. nginx再起動
systemctl restart nginx

これで、ブラウザアクセス時に
ユーザー名とパスワードの入力を求められるようになります。


##その他(推奨)

プロトタイプでも、できれば最低限以下を入れておくと安心です。

  • エラーページ非公開
    → 不要な404ページ情報を出さない
  • アクセスログ/エラーログの管理
    → 初期はそのままでいいが、将来ログローテーション設定
  • SSL(HTTPS)
    → 本格運用ではLet’s EncryptなどでSSL化(プロトタイプなら未対応でもOK)

【まとめ表】

項目 内容
サーバ情報非表示 server_tokens off;
Basic認証設定 .htpasswd作成+nginx側で認証設定
ファイアウォール(任意) ufw allow 'Nginx Full'
SSL(本番向け) Let’s Encryptなど

ここまでやれば

  • 一般ユーザーには非公開
  • 認証したユーザーのみアクセス可能
  • サーバー情報も外に漏れない
  • 軽量&高速

という非常にきれいなプロトタイプ環境が作れます。


nginxの「/」のルートディレクトリはどこか?

Ubuntuで標準インストールしたnginxだと、
デフォルトでは

/var/www/html/

がドキュメントルート(/に対応するディレクトリ)です。

つまり、ここにファイルを置けばブラウザから直接アクセスできます。

例えば、

  • /var/www/html/index.html を置くと
  • http://[サーバーのIP]/index.html でアクセスできる

という流れです。


実際の設定ファイルも確認してみる

設定ファイルはここです。

/etc/nginx/sites-available/default

この中に、たぶんこういう記述があります。

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

この中の

root /var/www/html;

がまさに、「/にアクセスしたらこのディレクトリを見に行きますよ」という設定になっています。


テストファイルを置く手順

  1. WinSCPでサーバに接続
  2. /var/www/html/ に移動
  3. そこに例えば test.html をアップロード
  4. ブラウザでアクセス確認

例:

  • ファイル: /var/www/html/test.html
  • URL: http://[サーバのIP]/test.html

これでOKです。


注意点

  • /var/www/html/ にファイルを書き込むには、パーミッションが必要です。
  • nginxをインストールしたばかりなら、最初に「index.nginx-debian.html」というファイルが置かれています。 これは不要なら消してもいいです。

【まとめ】

項目 内容
nginxのルートディレクトリ /var/www/html/
設定ファイル /etc/nginx/sites-available/default
ファイル置き方 WinSCPでアップロード
ブラウザでアクセス http://[IP]/ファイル名