web-dev-qa-db-ja.com

Cookieが存在する場合のNginxリダイレクト

NginxでCookieを確認するための限られたリソースを見てきましたが、私が探していた答えを本当に見つけることができませんでした。うまくいけば、Nginxマスターの何人かが私に手を貸してくれるでしょう。

基本的に、ユーザーがCookieを持たない限り、別のドメインにリダイレクトしたいvhostがあります。これが私が作成したものです。

server {
  listen 80;
  server_name example.com;

  if ($http_cookie ~* "dev_cookie" ) {
    root /home/deploy/apps/example/current/public;
    passenger_enabled on;
    rack_env production;
    break;
  }
  rewrite ^/(.*) http://beta.example.com/$1 permanent;
}

しかし、それはうまくいかないようです、私はエラーを受け取ります:

[emerg]: "root" directive is not allowed here in /opt/nginx/conf/nginx.conf:45

ここでの進め方がわかりません、アイデアはありますか?

19
JP Silvashy

それは理にかなっている。私はその異なるルートフォルダーを使用して別の仮想ホスト(beta.example.com)を定義し、Cookieが検出されたら、書き換えを行います

ドメインに条件付きで異なるルートを設定することはできませんが、条件付きで別のドメインにリダイレクト(書き換え)することはできます

この男の例は少し前に私を助けました http://nicknotfound.com/2009/01/12/iphone-website-with-nginx/

20
Raine