2016-10-13 104 views
0

我必須創建一個server_name作爲我的CDN的原始位置的偵聽器。NGINX多個server_name,但每個server_name都有robots.txt文件?

的CDN希望從origin.mydomain.com拉

我已經有行代碼100S下www.mydomain.com,展示全部重寫,規則和這樣的,我需要使用這一切再次編碼。

我簡單的解決辦法是有

服務器名www.mydomain.com origin.mydomain.com

輕鬆擁有NGINX監聽請求到「原點」的子域。

我的恐懼是谷歌發現子域並開始抓取它。我想以某種方式阻止來自「origin」子域的Google。由於聲明瞭多個server_name,因此我不確定是否可以將robots.txt文件放置在某處,因爲使用與活動站點相同的根文件夾。

有沒有簡單的方法來做到這一點?

所有反饋意見。

乾杯 瑞安

回答

0

使用兩個server塊,並使用include指令的通用代碼來拉。例如:

server { 
    server_name www.mydomain.com; 
    include /path/to/common/config; 

    location = /robots.txt { 
     root /path/to/friendly/dir; 
    } 
} 
server { 
    server_name origin.mydomain.com; 
    include /path/to/common/config; 

    location = /robots.txt { 
     root /path/to/unfriendly/dir; 
    } 
} 

所以,你有兩個robot.txt文件在不同的目錄 - 或使用rewrite ... last到URI映射到不同的本地文件。

+0

好的,通過在可以包含的外部代碼中包含所有重寫等簡化。包含必須有任何格式?或者只是剪切/粘貼到空白配置文件? – user3273784

+0

[文檔](http://nginx.org/en/docs/ngx_core_module.html#include)規定「包含的文件應包含語法上正確的指令和塊」。基本上是剪切和粘貼。 –

+0

嗯。我收到一個錯誤。 nginx:[emerg]「location」指令在這裏是不允許的/usr/local/etc/nginx/conf.d/rewrite_rules.conf:7 – user3273784

相關問題