私はnginxconfigsを初めて使用し、これまでグーグルで多くの時間を費やしてきました。「リダイレクト」サーバーで使用する非常に基本的なnginx構成ファイルを作成しようとしています。
ユーザーは、Aレコードでネイキッドドメイン(example.com)をリダイレクトサーバーのIPアドレスにポイントし、CNAMEで「www」レコードを別のサーバーにポイントする必要があります。
リダイレクトサーバーの目的は、301リダイレクトを実行して、任意/ワイルドカードのネイキッドドメインをドメインの「www」バージョンに戻し、他のサーバーで適切に処理できるようにすることです。
しかし、A-recordによってサーバーIPを指している誤って構成された「www」ドメインをキャッチし、リダイレクトサーバーのカスタムエラーページに誘導して、アカウントを正しく設定する方法の詳細を説明したいと思います。サービス。
これが私が持っているものです。それは機能しますが、私は構成を書くのが初めてなので、最初のサーバーブロックのカスタムエラーページへのリダイレクトを処理するためのより良い方法があるかどうか疑問に思いました。TIA!
#redirect to error page if begins with 'www.'
server {
listen 80;
server_name ~^www.; #only matches if starts with 'www.'. Is this good enough?
rewrite ^(.*)$ /404.html; #is this the correct way to direct to a custom error page?
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
}
#no match, so redirect to www.example.com
server {
listen 80 default_server;
rewrite ^(.*)$ $scheme://www.$host$1 permanent;
}
プレフィックス/サフィックスサーバー名の照合は、正規表現よりも高速で簡単です。
また、書き換えを使用する理由はありません。404を返したいので、それを行うと、nginxが残りのすべてを行います。ところで、書き換えを使用する200 OK
と、の/404.html
代わりにのコンテンツで戻ります404 Not Found
。
だからここにあります:
server {
listen 80;
server_name www.*;
root /usr/share/nginx/html;
error_page 404 /404.html;
location / {
return 404;
}
location = /404.html {
internal;
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加