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」みたいな情報が出ます。
これを隠しましょう。
- 設定ファイルを編集します。
 
vi /etc/nginx/nginx.conf
※
http {ブロック内に次を追加します。
server_tokens off;
- 保存後、nginx再起動
 
systemctl restart nginx
これでサーババージョンがレスポンスヘッダーから消えます。
Basic認証を設定(認証ユーザーだけアクセス許可)
一般公開を防ぎ、ID/PASS認証したユーザーだけ見れるようにします。
- 認証用パスワードファイルを作成
 
まず apache2-utils をインストール(nginxでもこれを使います)。
apt install apache2-utils
次に、認証ファイルを作成(たとえば /etc/nginx/.htpasswd)
htpasswd -c /etc/nginx/.htpasswd username
※ここで任意のユーザー名とパスワードを設定
(例: ユーザー名をtestuserとすると、プロンプトが出てパスワード設定できます)
注意: -cは最初だけつける。2人目以降は不要(上書きされるので)。
- 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;
}
- 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;
がまさに、「/にアクセスしたらこのディレクトリを見に行きますよ」という設定になっています。
テストファイルを置く手順
- WinSCPでサーバに接続
 /var/www/html/に移動- そこに例えば 
test.htmlをアップロード - ブラウザでアクセス確認
 
例:
- ファイル: 
/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]/ファイル名 |