Redirect 如何将nginx重定向到没有html头的非http

Redirect 如何将nginx重定向到没有html头的非http,redirect,nginx,Redirect,Nginx,我正在尝试将nginx中的url重定向到非http协议,例如test://123456 当我去test.com/123456 我尝试了以下重写: 重写^/(.*)$test://$1永久性 但它的工作原理很奇怪,它添加了html/body头,这会弄乱我的代码,有没有办法不用html头,或者有其他推荐的重写方法 HTTP/1.1 301 Moved Permanently Server: nginx/1.1.19 Date: Tue, 30 Apr 2013 14:14:47 GMT Co

我正在尝试将nginx中的url重定向到非http协议,例如test://123456 当我去test.com/123456

我尝试了以下重写: 重写^/(.*)$test://$1永久性

但它的工作原理很奇怪,它添加了html/body头,这会弄乱我的代码,有没有办法不用html头,或者有其他推荐的重写方法

HTTP/1.1 301 Moved Permanently  
Server: nginx/1.1.19 
Date: Tue, 30 Apr 2013 14:14:47 GMT 
Content-Type: text/html 
Content-Length: 185  
Connection: keep-alive
Location: test://123456


301永久搬迁
301永久搬迁

nginx/1.1.19
这并不奇怪,应该是这样的

指定要删除的实体应存在

10.3.2 301永久移动

新的永久URI应该由响应中的Location字段提供。除非请求方法是HEAD,否则响应的实体应该包含一个简短的超文本注释,并带有指向新URI的超链接

而且

10.3.3 302发现

临时URI应该由响应中的Location字段提供。除非请求方法是HEAD,否则响应的实体应该包含一个简短的超文本注释,并带有指向新URI的超链接

在此上下文中,应定义为:

这个词,或形容词“推荐”,意味着在特定情况下可能存在忽略特定项目的正当理由,但在选择不同课程之前,必须理解并仔细权衡其全部含义

答案取自


当然,您仍然可以这样做,一种可能是代理请求并将requests方法从GET改为HEAD。这应该确保只发送HTTP头

这是未经测试的,但它应该是一个良好的起点:

server {
    listen 8080;
    server_name localhost;
    return 301 test://$request_uri;
}

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_method HEAD;
        proxy_pass http://localhost:8080;
    }
}
也是出于对这方面的兴趣

server {
    listen 8080;
    server_name localhost;
    return 301 test://$request_uri;
}

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_method HEAD;
        proxy_pass http://localhost:8080;
    }
}