我将 nginx 与 php5-fpm 一起使用,并使用以下fastcgi_params
文件:
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param HTTPS $https;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
我注意到该$_SERVER['HTTP_REFERER']
变量未设置。我在 nginx wiki 中搜索了对 Referer 标头的任何引用,但没有找到任何提及与 fastcgi 相关的问题的内容。
我怎样才能让 nginx 传递该标头?我是否遗漏了某些明显的东西?
答案1
HTTP_REFERER
当且仅当远程用户代理(例如 Web 浏览器)提供可选标头时,nginx 才会为 CGI 脚本设置环境变量。Referer:
此标头的内容对于远程用户代理而言也是完全任意的(尽管它们应该是最后访问的页面,但情况并不总是如此,并且没有任何因素限制它必须如此。
无论何时您的 CGI 脚本使用此变量,它都应该有一个备用控制路径来处理未设置的情况,并且它应该认识到它经常是错误的或被欺骗的。