【已解答】php的fastcgi参数错误
复现版本:(稳定版) v10.0.2-LTS PHP74
/www/server/nginx/conf/fastcgi.conf
...省略部分
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_paramREDIRECT_STATUS 200;
fastcgi_paramHTTP_HOST $host;
正常版本 9.6.0没这个参数
问题影响:
正常情况下HTTP_HOST是会输出当前的域名+端口(80 443时候会隐藏),业界约定 HTTP_HOST 的默认表现默认就是这样。
但因为fastcgi默认参数里有一个错误的 HTTP_HOST 把端口给覆盖掉了,就没了端口造成代码报错。不写这个参数是正常的,如果写也应该写成 fastcgi_paramHTTP_HOST $http_host;
不知道为什么要加这个参数
测试代码:
<font color="#efb080">echo</font> <font color="#e394dc">"HTTP_HOST: "</font> <font color="#d6d6dd">.</font> <font color="#d6d6dd">$_SERVER[</font><font color="#e394dc">'HTTP_HOST'</font> <font color="#d6d6dd">.</font> <font color="#e394dc">"<br>"</font><font color="#d6d6dd">;</font>
<font color="#efb080">echo</font> <font color="#e394dc">"SERVER_NAME: "</font> <font color="#d6d6dd">.</font> <font color="#d6d6dd">$_SERVER[</font><font color="#e394dc">'SERVER_NAME'</font> <font color="#d6d6dd">.</font> <font color="#e394dc">"<br>"</font><font color="#d6d6dd">;</font>
<font color="#efb080">echo</font> <font color="#e394dc">"SERVER_PORT: "</font> <font color="#d6d6dd">.</font> <font color="#d6d6dd">$_SERVER[</font><font color="#e394dc">'SERVER_PORT'</font> <font color="#d6d6dd">.</font> <font color="#e394dc">"<br>"</font><font color="#d6d6dd">;</font>
fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_paramQUERY_STRING $query_string;
fastcgi_paramREQUEST_METHOD $request_method;
fastcgi_paramCONTENT_TYPE $content_type;
fastcgi_paramCONTENT_LENGTH $content_length;
fastcgi_paramSCRIPT_NAME $fastcgi_script_name;
fastcgi_paramREQUEST_URI $request_uri;
fastcgi_paramDOCUMENT_URI $document_uri;
fastcgi_paramDOCUMENT_ROOT $document_root;
fastcgi_paramSERVER_PROTOCOL $server_protocol;
fastcgi_paramREQUEST_SCHEME $scheme;
fastcgi_paramHTTPS $https if_not_empty;
fastcgi_paramGATEWAY_INTERFACECGI/1.1;
fastcgi_paramSERVER_SOFTWARE nginx/$nginx_version;
fastcgi_paramREMOTE_ADDR $remote_addr;
fastcgi_paramREMOTE_PORT $remote_port;
fastcgi_paramSERVER_ADDR $server_addr;
fastcgi_paramSERVER_PORT $server_port;
fastcgi_paramSERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_paramREDIRECT_STATUS 200;
fastcgi_paramHTTP_HOST $host;
您好,这是当前最新版本的配置;看得出您的疑问在最后两行配置上
fastcgi_paramREDIRECT_STATUS 200;
fastcgi_paramHTTP_HOST $host;
fastcgi_paramREDIRECT_STATUS 200;
这一段为了兼容老旧版本的PHP添加的代码,可以不加,但是为了兜底兼容老代码,加上也不影响
fastcgi_paramHTTP_HOST $host;
这段代码的是为了让PHP程序获取到客户端(Nginx)传递过来的实际域名或者主机名,而非从server_name 中传递过来的固定地址
页:
[1]