デフォルトサーバーを防ぐ最善の方法は何ですか?

デフォルトサーバーを防ぐ最善の方法は何ですか?

私は多数の vhost を持っており、空白ページ、エラー ページ、または一般的に Nginx のリソースを最も効率的に使用する方法でデフォルトの vhost を「オフ」にして、他の vhost には事前定義されたドメイン経由でのみアクセスできるようにしたいと考えています。

答え1

定義するデフォルトサーバーを返すHTTP 444コード:

server {
    listen      80 default_server;
    server_name _;
    return      444;
}

(4xxエラーコードを返すということは、クライアントがリクエストを失敗したリクエストとして解釈できるということであり、HTTP 200 空白ページですが、完全に機能しました。信じてください

ポート443 / SSLリクエストの場合、使用できます ssl_reject_handshake on

答え2

定義するだけデフォルト空の index.html ファイルがあるディレクトリを指す vhost。

server {
    listen       80 default_server;
    server_name  _ ;
    root /var/www/placeholder ; 
    index index.html;
}

/var/www/placeholderに空のインデックスを配置します

答え3

すべてを否定しないのはなぜか

server {
    listen       80 default_server;
    server_name  _;

    location / {
        deny    all;
    }
}

答え4

これは、 nginx を実行している Debian 10 (buster) 上の HTTP と HTTPS の両方で機能したものです1.18.0

注: 私は常にのセクションinclude /etc/nginx/sites-enabled/*;に追加し、 /etc/nginx/sites-enabled フォルダーを使用して vhosts を管理します。http/etc/nginx/nginx.conf/etc/nginx/sites-available

ステップ1: 自己署名プレースホルダー証明書を作成する

$ mkdir -p /usr/local/etc/ssl

$ cd /usr/local/etc/ssl

$ openssl req -new -x509 -days 1 -nodes -out default-cert.pem -keyout default-key.pem
Generating a RSA private key
.+++++
.........................+++++
writing new private key to 'default-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

ステップ2: デフォルトのvhostを作成する

cat << EOF > /etc/nginx/sites-available/default
server {
    listen 80 default_server;
    listen 443 default_server ssl;

    return 444;

    ssl_ciphers aNULL;
    ssl_certificate /usr/local/etc/ssl/default-cert.pem;
    ssl_certificate_key /usr/local/etc/ssl/default-key.pem;
}
EOF

ステップ3: デフォルトのvhostを有効にする

cd /etc/nginx/sites-enabled
ln -s ../sites-available/default default

ステップ4: nginxを再起動する

ここに画像の説明を入力してください

ここに画像の説明を入力してください

関連情報