我如何通过添加 HTTP 字段(无需返回和重写)手动通过 nginx 编写 301 重定向代码?

我如何通过添加 HTTP 字段(无需返回和重写)手动通过 nginx 编写 301 重定向代码?

我注意到,当我使用 nginx 创建 301 重定向(重写,返回 301)时,我得到以下 HTML 正文:

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

我想摆脱 Nginx 生成的 301 重定向的 HTML 主体。Facebook 和 Twitter 很久以前就摆脱了 301 重定向的 HTML 主体。这是一种在 301 重定向期间节省一些未经请求的字节的方法。

因此,我猜想可以手动创建 301 重定向的 HTTP 标头字段,而无需调用重写或返回 301。如果我在 nginx 的位置块中调用“重写”或“返回 301”,它也会生成我不想要的 HTML 正文。我无法修改配置文件,因为我使用 Plesk。Nginx 配置文件是自动生成的。

因此,我猜测可以使用 NGINX 在位置块中手动创建以下 HTTP 标头字段:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 15 Sep 2020 17:48:13 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://bloup.com/

你会怎么做?

答案1

在 Plesk 中,我明白我必须将重定向封装在位置/块中。

因此,当我自己输入时:

if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

我有

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

然后,如果我输入:

location / {
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }
}

我摆脱了通过 Nginx 进行 301 重定向期间返回的 HTML 主体响应。

相关内容