Url rewriting nginx www重定向,其他子域除外

Url rewriting nginx www重定向,其他子域除外,url-rewriting,nginx,rewrite,cloud-foundry,Url Rewriting,Nginx,Rewrite,Cloud Foundry,可能还有另一个nginx重定向问题。。。找不到答案,因此: 如果cloudfoundry nginx配置包含以下服务器定义,如何重定向到但不重写任何子域http://*.domain.com: server { listen 80; server_name _; server_name_in_redirect off; } 我尝试了这种配置 server { server_name domain.com rewrite ^(.*) ht

可能还有另一个nginx重定向问题。。。找不到答案,因此:

如果cloudfoundry nginx配置包含以下服务器定义,如何重定向到但不重写任何子域http://*.domain.com:

server {
    listen       80;
    server_name  _;
    server_name_in_redirect off;
}
我尝试了这种配置

server {
     server_name domain.com
     rewrite ^(.*) http://www.domain.com$1 permanent;
}

server {
    listen       80;
    server_name  _;
    server_name_in_redirect off;
}
但是我得到了无限的重定向。

尝试替换

server_name  _;


这很有效,谢谢。我试图不修改任何原始配置文件。但是,为什么“u”不能捕获所有其他域呢?@HTTPeter下划线符号在Nginx中实际上并不是“任何域”的意思,而是相反的意思,即“u”代表“一些从不匹配的域”。因此,当一个请求带有host=subdomain.domain.com时,Nginx会检查第一个服务器{}部分(server\u name domain.com)并且不匹配,然后检查第二个服务器{}部分(server\u name\u)-它也不匹配,这意味着第一个服务器部分用作默认部分。@HTTPeter您还可以切换两个服务器部分,使带有“\u”的部分成为第一部分,或者使用“listen 80 default\u server”将第二部分显式定义为默认部分。如果您不必处理任何其他偶尔属于“服务器名称”的请求(与*.domain.com完全无关),那么这就可以了。
server_name *.domain.com;
server {
    listen 80;
    server_name domain.com
    return 301 http://www.domain.com$request_uri;
}

server {
    listen 80 default_server;
    ...
}