nginx 子域重写

deb*_*deb 8 rewrite nginx

另一个 nginx 重写规则问题

我怎样才能从http://www.*.domain.com到重写http://*.domain.com

提前致谢

——黛布

编辑:

很抱歉,我没有看到纺织格式从我的问题中删除了 *。我现在修好了。我需要做的是从 www.joe.domain.com 转到 joe.domain.com,其中 joe 可以是任何单词。

Mar*_*ald 12

这是一个相当大的黑客。

性能明智的最快方式是

server {
  server_name www.domain.com;
  rewrite ^ http://domain.com$request_uri permanent;
}
Run Code Online (Sandbox Code Playgroud)

您保存了一个正则表达式匹配以及两个捕获,此外您还可以利用 nginx 使用哈希表查找匹配的服务器块。

此外,您不需要重新启动 nginx - 只需要重新加载即可,谁想要比所需的停机时间更长?


iai*_*lbc 7

domain.com 之前的额外句点有什么意义?目标是从 URL 中删除 www 吗?如果是这样,这应该可以解决问题:

if ($host ~* www\.(.*)) {
  set $host_without_www $1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}
Run Code Online (Sandbox Code Playgroud)

不要忘记:sudo /etc/init.d/nginx restart加载它

资料来源:NGINX 维基


blu*_*yed 6

您可以使用正则表达式服务器名称(请参阅http://nginx.org/en/docs/http/server_names.html#regex_names):

server {
  listen 80;
  listen 443;
  server_name ~^www\.(\w+)\.domain\.com$
  location / {
    rewrite ^ $scheme://$1.domain.com$request_uri permanent;
  }
}
Run Code Online (Sandbox Code Playgroud)