使用 nginx 重写 uri 时出错

使用 nginx 重写 uri 时出错

这是我们在 ubuntu 12.04 服务器上加载 nginx 时遇到的错误:

nginx: [emerg] invalid number of arguments in "location" directive in /opt/nginx/conf/nginx.conf:58

我们试图做的是将一个字符串附加到输入的 uri 末尾。例如,如果输入了mysite.com/abcd或,它们应该mysite.com/abcd/nginxrewritemysite.com/abcd/auth/signin

以下是我们所拥有的nginx.conf

location {
          rewrite "/[a-zA-Z]\w{1,9}/" /$1/auth/signin last;
          rewrite "/[a-zA-Z]\w{1,9}" /$1/auth/signin last;
        }
     }

上面的位置块有什么问题?我们应该如何命名位置块?谢谢您的帮助。

更新:

这是servernginx.conf 中的块:

 server {
        listen 80;
        server_name mysite.com;
        root /var/www/;
        passenger_enabled on;
        rails_env production;
        passenger_base_uri /nbhy;

 ...
}

答案1

位置块需要 uri。因此,您可能需要以下内容:

location / {
    rewrite "/[a-zA-Z]\w{1,9}/" /$1/auth/signin last;
    rewrite "/[a-zA-Z]\w{1,9}" /$1/auth/signin last;
}

或者,如果您不想将这些重写应用于某个路径,只需将位置部分全部删除即可。即

rewrite "/[a-zA-Z]\w{1,9}/" /$1/auth/signin last;
rewrite "/[a-zA-Z]\w{1,9}" /$1/auth/signin last;

相关内容