2012-11-15 21 views
3

我有nginx服務器,但需要運行apache_note()功能。
是否有任何模塊或提供此功能的nginx補丁? 還需要usertrack擴展名(這在apache中很容易獲得)用於nginx或類似的替代選項。如果nginx沒有可用的usertrack,請建議一些模擬相同功能的邏輯。需要帶nginx的apache_note()函數/用於nginx的usertrack

+0

@VBart,我知道這就是爲什麼要問nginx替代它。 – Johnny

+0

@VBart如果你想在access_log中加入更多的信息,apache_note真的很方便,所以他們可以稍後進行按摩以提供更好的見解。 可以說你正在對訪問該頁面的用戶的x%進行相同url的ab實驗,apache_note可以讓你顯示用戶是否在沒有用戶傳入額外查詢參數的情況下擊中A或B。 – dminer

+0

@dminer你可以使用響應頭來達到同樣的目的。更有甚者,nginx有一個專門用於A/B測試的模塊:http://nginx.org/en/docs/http/ngx_http_split_clients_module.html apache_note()是一個PHP函數,而nginx與php無關。 – VBart

回答

1

對於nginx或類似的替代方案,還需要usertrack擴展(這在apache中很容易獲得)。

http://nginx.org/en/docs/http/ngx_http_userid_module.html

+0

是的,昨天我才知道它。只是測試它的工作原理和usertrack一樣。 – Johnny

+0

thanx很多。看起來像它的工作。但問題是需要一個請求來設置coookie和從第二個請求我可以得到該cookie。我可以從第一個請求本身訪問cookie? – Johnny

+0

它看起來像你已經找到答案:http://stackoverflow.com/questions/13412100/not-able-to-get-uid-from-nginx-for-first-request – VBart

2

我看到有一個公認的答案對於這一點,只是增加了它,我想許多人,包括我自己從谷歌搜索apache_note和Nginx的來到這裏。

使用apache_note的一個主要原因是用於在訪問日誌中存儲某些內容。例如,當您不使用基本身份驗證時的用戶名。

使用PHP和Nginx完成此任務的一種簡單方法是將其作爲標題發送並記錄下來。

PHP:header('username: johndoe');

添加以下的nginx.conf到log_format:$sent_http_username

所有標題都可以在日誌的$ sent_http_HEADERNAME形式

1

我也發現這一點的同時搜索一個NGINX替代apache_note()。沒有太多的信息,我發現的唯一解決方案是隻使用響應頭。單獨這個不適用於你不想發回給用戶的數據,這就是我正在使用的情況。

我發現的解決方案是使用HttpHeadersMoreModule清除標頭,然後將它們傳遞給用戶。這也清除了「$ sent_http_」變量,但是留下了「$ upstream_http_」用於你的日誌。