Nginxでやろうとしていることがあります。数人のユーザーとサブドメインがあり、各ユーザーが/home/dev/sites/USER_ID
にディレクトリを持っているとします。 USER_ID.dev.example.com
がそのディレクトリを指すようにしたいと思います。
次のようにvhostファイルを作成してみました。
server {
listen 80;
server_name ~^(?<site_id>)$.dev.example.com;
root /home/dev/sites/$site_id;
index index.php;
location / {
try_files $uri $uri/ /index.php?$uri&$args;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
ただし、発生しているのは、私が持っているPhpMyAdminインストールが表示されていることだけです(明らかに、別の仮想ホストがそこにポイントしています)。誰かが私が間違っていることを教えてもらえますか?それはただの正規表現だと感じていますが、よくわかりません。
$
が文字列の途中にあるため、その式は一致しません。試してください:
server_name ~^(?<site_id>.+)\.dev\.example\.com$;