2013-10-17 43 views
1

在Nginx中,我如何將Googlebot流量代理到光油後端,同時保持所有其他流量直接指向我的PHP後端?Nginx:如何將Googlebot流量轉移到光油

我想是這樣的:

try_files $uri $uri/ /index.php; 
if ($http_user_agent ~* Googlebot) { 
    proxy_pass http://varnish; 
} 
location ~* \.php$ { 
    fastcgi_pass 127.0.0.1:9000; 
} 

然而,上述不server背景下,因爲proxy_pass不是在server上下文中不允許使用。

如果我包裹上述在location/{}塊,然後我有一個if一個location塊這使得ifevil內部。 (我嘗試了它,它有時會起作用,但它是間歇性和不可預知的。)

任何方式使這項工作?

回答

2

您可以使用錯誤頁面將流量內部路由到服務器塊中的其他位置,然後使用該位置塊代理清漆。

例如:

server { 
    error_page 519 = @google; 
    if ($http_user_agent ~* Googlebot) { 
     return 519; 
} 
    location @google { 
     proxy_pass http://varnish; 
} 
+0

這將工作雖然不如用「419」,因爲這不是分配給任何其他合法錯誤。 – Dayo

+0

謝謝!真的聰明的解決方案! – richardkmiller

+0

沒問題,樂意幫忙 – Rami