2011-07-06 8 views
3

Iは、(例:test.com)ウェブサイト有し、サブドメインの2種類がありますnginxを設定するには、いくつかのサブドメインはjs/cssファイルしか訪問できませんか?

  1. test.com
  2. 静的_ $ {バージョン} .test.com

1番目はメインサブドメインで、2番目は静的ファイル(js/css/image)のみに使用されます。 ${version}はバージョン番号で、js/css/imagesファイルの新しいバージョンがあると変更されます。クライアントが古いものをキャッシュする可能性があるので、必要です。

ここではnginxを使用しますが、サブドメインについては設定しません。すべてのサブドメインをメインのtest.comドメインに書き換えるだけです。

それは動作しますが、ある日私は検索エンジンを見つけました。static.test.comをメインドメインとして使用して私のサイトにアクセスします。

static.test.comに静的ファイルしかアクセスできないようにするには、どのようにnginxを設定しますか?メインドメインはすべてを訪問できますか?


UPDATE

私はJS/CSS /画像をstatic.test.comの要求がtest.comに、いないディスクの静的ファイルに書き換えることを願っています。他のリクエスト(js/css/imagesではなく)は404を直接返します。 Timofey Stolbov's answerため

おかげで、私は今コンフィグ書き込み:私のJS/CSS /画像ファイルので

server { 
    listen 80; 
    server_name ~^static_(.*)\.test\.com$; 
    set $version $1; 
    rewrite ^/public/(.*) http://test.com/public/$1?v=$version last; 
    return 404; 
} 

をすべて「パブリック」ディレクトリ内にあるので、それが「公共」で始まる場合、私はちょうどチェック。そうでない場合は、ちょうど404を返す

しかし、私はそれが正しいかどうか、特にreturn 404がわからない、またはこれを行うためのよりよい方法があります。

+0

回答が更新されました。 –

答えて

2

私はこのようなものを使用します。 2番目の質問

については

server { 
    server_name static.test.com; 
    root /var/www/static; 
    location/{ 
    rewrite ^/([^\/]+\.css)$ /css/$1 break; 
    rewrite ^/([^\/]+\.js)$ /js/$1 break; 
    rewrite ^/([^\/]+\.(png|jpg|jpeg))$ /images/$1 break; 
    } 
} 

はい、あなたのcofigは正しいです。しかし、永続的なリダイレクトを使用するか、302 Moved Temporarilyでリクエストをリダイレクトします。また、デフォルトではlisten 80が暗黙指定されています。

すべてのjs/css/imageにリダイレクトを使用するのは良い考えではないと思いますので、2度考えてください。 :)

ここは設定です。

server { 
    server_name ~^static_(.*)\.test\.com$; 
    set $version $1; 
    rewrite ^/public/(.*) http://test.com/public/$1?v=$version permanent; 
    return 404; 
} 
+0

ありがとう、更新された質問をご覧ください – Freewind

関連する問題