为什么 google-site-verification 会进入 fastcgi-pass ?

为什么 google-site-verification 会进入 fastcgi-pass ?

请参阅以下 nginx 配置文件。
基于虚拟名称的托管(example.com),将对 example.com 和 www.example com 的请求传递到端口 9000 上的 mono fastcgi 进程(127.0.0.1:9000)

我已经添加了文件 google-site-verification,但问题是,asp.net fastcgi-application 是一个 MVC 应用程序,因此它找不到名为“google79af7e588a34905e0.html”的控制器。

我正在尝试覆盖虚拟主机配置文件中的位置,因此它不会将 google79af7e588a34905e0.html 的请求转发到 fastcgi 应用程序,但它不起作用。

我重启了 nginx,但没什么变化……
我做错了什么?我尝试删除“location = /”中的等号,但不起作用,我尝试将位置覆盖移到主位置之前,但也没用。我还来回更改了主机名,只是为了看看我是否在正确的配置文件中,结果确实如此,当我更改域名时,我开始收到 404。

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##


 server {
         listen   80;
         server_name www.example.com example.com;
         access_log   /var/log/nginx/your.domain1.xyz.access.log;




         location / {
                 root /home/example/www/homepage;
                 #index index.html index.htm default.aspx Default.aspx;
                 #fastcgi_index Default.aspx;
                 fastcgi_pass 127.0.0.1:9000;
                 include /etc/nginx/fastcgi_params;
         }



    #http://serverfault.com/questions/477103/how-do-i-verify-site-ownership-on-google-webmaster-tools-through-nginx-conf
    location = /google79af7e588a34905e0.html {
            rewrite ^/(.*)  $1;
            return 200 "google-site-verification: $uri";
    }




    location /doc {
        root /usr/share;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    location /shared_images {
        root /usr/share;
        autoindex off;
    }

    error_page 404 /CustomErrors/404.htm;

    # redirect server error pages to the static page /50x.html
    #
    #error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #   root /usr/share/nginx/www;
    #}

}

答案1

我会选择这种设置:

server {
    listen 80;
    server_name www.example.com example.com;
    access_log   /var/log/nginx/your.domain1.xyz.access.log;

    root /home/example/www/homepage;

    try_files $uri $uri/ @mvc;

    location @mvc {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
    }

    location /doc {
        alias /usr/share/doc;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    location /shared_images {
        alias /usr/share/shared_images;
        autoindex off;
    }

    error_page 404 /CustomErrors/404.htm;
}

这里我们使用 nginxtry_files指令来检查文件是否在文件系统中物理存在。如果文件不存在,则请求将传递给 MVC 后端。

我还用指令替换了root位置内的指令alias,因为这使得配置更加直观,至少我是这么认为的。

此设置还会使 nginx 服务器全部为静态资产,而不是让 MVC 后端也处理这些请求。您可能需要调整主块server指令root

但是,此设置需要文件系统上的实际文件。

答案2

根定义上方的位置可以解决问题

location /google79af7e588a34905e0.html {
    alias /your/local/path/to/google79af7e588a34905e0.html;
}

无需任何重写。

相关内容