摘要Nginx的:不同的robots.txt的alternte域
我有它的內部和外部域指向一個單一的Web應用程序,我想一個robots.txt來阻止所有訪問內部域,但允許所有訪問外部域。
問題詳細
我有用於代理Django應用程序的簡單的Nginx服務器塊(見下文)。如您所見,此服務器塊響應任何域(由於缺少server_name參數)。不過,我想知道如何標記特定的域名,例如Nginx會爲他們提供一個自定義的robots.txt文件。
更具體地說,域example.com和www.example.com將從htdocs目錄提供默認的robots.txt文件。 (由於「root/sites/mysite/htdocs」已設置,robots.txt文件位於/sites/mysite/htdocs/robots.txt)
但是,我也希望域「example.internal.com 「(指與example.com相同的服務器)提供自定義robots.txt文件;我想創建一個自定義的robots.txt,所以谷歌不索引該內部域。
我想過複製服務器塊並在其中一個服務器塊中指定以下內容。然後以某種方式覆蓋該服務器塊中的robots.txt查找。
"server_name internal.example.com;"
但是爲了這個目的複製整個服務器塊看起來不太乾燥。
我也想過使用if語句來檢查主機頭是否包含內部域。然後以這種方式提供自定義robots.txt文件。但Nginx說If Is Evil。
什麼是爲內部域提供自定義robots.txt文件的好方法?
謝謝你的幫助。
這是我正在使用的服務器塊的代碼示例。
upstream app_server {
server unix:/sites/mysite/var/run/wsgi.socket fail_timeout=0;
}
server {
listen 80;
root /sites/mysite/htdocs;
location/{
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}
非常感謝您採用這種方法,putnamhill。這看起來正是我想要做的。喬,你不客氣, – 2014-10-13 15:04:31
不客氣。這是一個有趣的難題要解決。 – 2014-10-13 15:06:51