Nginx

為什麼 google-site-verification 進入 fastcgi-pass ?

  • September 22, 2014

請參閱下面的 nginx 配置文件。

基於虛擬名稱的託管 (example.com),將 example.com 和 www.example com 的請求傳遞給埠 9000 (127.0.0.1:9000) 上的單聲道 fastcgi-process

我添加了文件 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;
   #}

}

我會選擇這種設置:

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 後端也處理這些請求。您可能需要調整主serverroot指令。

但是,此設置需要文件系統上的實際文件。

引用自:https://serverfault.com/questions/630348