私は私のサーバー上の2つの異なるフォルダにサブドメインのルートURLとサブドメインのディレクトリを提供しようとしています。これは私が持っているし、働いていない簡単なセットアップです...
server {
index index.html index.htm;
server_name test.example.com;
location / {
root /web/test.example.com/www;
}
location /static {
root /web/test.example.com/static;
}
}
この例では、test.example.com/
に移動すると、インデックスファイルが/web/test.example.com/www
に配置されます。
test.example.com/static
に移動すると、インデックスファイルは/web/test.example.com/static
に配置されます。
location /static
にはalias
ディレクティブを使用する必要があります。
server {
index index.html;
server_name test.example.com;
root /web/test.example.com/www;
location /static {
alias /web/test.example.com/static;
}
}
nginx wiki はrootとaliasの違いを私ができる以上に説明しています。
一見するとrootディレクティブに似ているかもしれませんが、ドキュメントのrootは変更されず、要求に使用されるファイルシステムパスだけが変更されます。リクエストのロケーション部分はNginxが発行するリクエストにドロップされます。
Locationディレクティブシステムは
/static
で始まるすべてのリクエストと/var/www/static
に存在するデータを転送したいように
したがって、簡単な方法では、最後のフォルダをフルパスから分離します。つまり、
フルパス:/var/www/static
最後のパス:/static
と最初のパス:/var/www
location <lastPath> {
root <FirstPath>;
}
それで、あなたが間違ったこととあなたの解決策は何であるかを見てみましょう。
あなたの間違い:
location /static {
root /web/test.example.com/static;
}
あなたの解決策:
location /static {
root /web/test.example.com;
}
server {
index index.html index.htm;
server_name test.example.com;
location / {
root /web/test.example.com/www;
}
location /static {
root /web/test.example.com;
}
}