为什么Nginx在状态码中未返回OK

时间:2019-12-10 05:44:58

标签: nginx nginx-config

我已经设置了nginx,但他返回的状态代码是:

状态码:200

但是在具有不同nginx设置的其他服务器上,我有:

状态码:200 OK

任何人都可以想到配置上的区别吗?

1 个答案:

答案 0 :(得分:0)

我认为您的配置一切正常。

nginx提供静态文件时,它会自行创建标准的“ HTTP / 1.1 200 OK”响应状态。

但是当它把请求传递给上游服务器时,它就将响应传递回去而不更改它。

以下是通过proxy_pass指令执行的脚本示例:

<?php

$msg="OK";
if(isset($_GET["msg"])){
    $msg=$_GET["msg"];
}

header("Status: 200 ".$msg);
echo "hello";

在此示例中,我们将参数传递到php脚本中,并用于制作响应状态:

#!/bin/bash

for msg in "" OK "NOT OK" "Everything is OK"
do
    curl -sI "https://x3m.dev/status/?msg=$msg" |grep -E "HTTP|Server"
done

这是此bash脚本的输出

HTTP/1.1 200
Server: nginx/1.10.3
HTTP/1.1 200 OK
Server: nginx/1.10.3
HTTP/1.1 200 NOT OK
Server: nginx/1.10.3
HTTP/1.1 200 Everything is OK
Server: nginx/1.10.3