Nginx通過配置rewrite規(guī)則實(shí)現(xiàn)URL重寫以及重定向。在rewrite規(guī)則中,可以使用Nginx定義的一些全局變量,用來獲取請(qǐng)求相關(guān)的信息或者傳遞信息給后端。以下是常用的Nginx全局變量:
$args:獲取URL中的參數(shù)部分,如 ?key=value。
$uri:獲取請(qǐng)求的URI,不包含請(qǐng)求參數(shù)。
$request_method:獲取HTTP請(qǐng)求方法,如 GET、POST、PUT等。
$request_uri:獲取請(qǐng)求的完整URI,包含參數(shù)。
$http_user_agent:獲取客戶端的User-Agent信息。
$remote_addr:獲取客戶端的IP地址。
$server_addr:獲取當(dāng)前請(qǐng)求的服務(wù)器的IP地址。
$server_port:獲取當(dāng)前請(qǐng)求的服務(wù)器的端口號(hào)。
$http_host:獲取請(qǐng)求的HTTP主機(jī)名。
$http_referer:獲取頁面的來源地址。
這些全局變量可以與rewrite指令一起使用,實(shí)現(xiàn)URL重定向、轉(zhuǎn)發(fā)等功能。例如,以下rewrite規(guī)則將所有請(qǐng)求都重定向到指定的URL,并在URL末尾添加參數(shù):
location / {
rewrite ^/(.*)$ http://example.com/$1?test=1 last;
}
在這個(gè)規(guī)則中,使用了Nginx的$1變量來獲取請(qǐng)求的URI,并將其添加到重定向URL的末尾,使用了$args變量來添加參數(shù)。這樣,當(dāng)有任何請(qǐng)求到達(dá)這個(gè)位置時(shí),都會(huì)被重定向到指定URL,并且?guī)в袇?shù)。