1. 程式人生 > >nginx筆記之fastcgi_param解釋

nginx筆記之fastcgi_param解釋

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#指令碼檔案請求的路徑
注意:$document_root 和 $fastcgi_script_name 之間沒有 /。原本Nginx只有「fastcgi_params」,後來發現
很多人在定義「SCRIPT_FILENAME」時使用了硬編碼的方式,於是為了規範用法便引入了「fastcgi.conf」。
不過這樣的話就產生一個疑問:為什麼一定要引入一個新的配置檔案,而不是修改舊的配置檔案?這是因為「fastcgi_param」指令是
陣列型的,
和普通指令相同的是:內層替換外層;和普通指令不同的是:當在同級多次使用的時候,是新增而不是替換。

換句話說,如果在同級定義兩次「SCRIPT_FILENAME」,那麼它們都會被髮送到後端,這可能會導致一些潛在的問題,
為了避免此類情況,便引入了一個新的配置檔案。
參考:FASTCGI_PARAMS VERSUS FASTCGI.CONF – NGINX CONFIG HISTORY fastcgi_param QUERY_STRING $query_string; #請求的引數;如?app=123fastcgi_param REQUEST_METHOD $request_method; #請求的動作(GET,POST)fastcgi_param CONTENT_TYPE $content_type; #請求頭中的Content-Type欄位fastcgi_param CONTENT_LENGTH $content_length; #請求頭中的Content-length欄位。
fastcgi_param SCRIPT_NAME $fastcgi_script_name; #指令碼名稱 fastcgi_param REQUEST_URI $request_uri; #請求的地址不帶引數fastcgi_param DOCUMENT_URI $document_uri; #與$uri相同。 fastcgi_param DOCUMENT_ROOT $document_root; #網站的根目錄。在server配置中root指令中指定的值 fastcgi_param SERVER_PROTOCOL $server_protocol; #請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
fastcgi_param GATEWAY_INTERFACE CGI/1.1; #cgi 版本fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #nginx 版本號,可修改、隱藏fastcgi_param REMOTE_ADDR $remote_addr; #客戶端IPfastcgi_param REMOTE_PORT $remote_port; #客戶端埠fastcgi_param SERVER_ADDR $server_addr; #伺服器IP地址fastcgi_param SERVER_PORT $server_port; #伺服器埠fastcgi_param SERVER_NAME $server_name; #伺服器名,域名在server配置中指定的server_name#fastcgi_param PATH_INFO $path_info; #可自定義變數#PHP only, required if PHP was built with --enable-force-cgi-redirect#fastcgi_param REDIRECT_STATUS 200;