开发者社区> 问答> 正文

访问云服务器上的Nginx当指定了某些Host请求头时不能正常访问

已解决

在阿里云服务器上安装了一个Nginx 做了如下的配置
    location /foo {
        default_type application/json;
        return 200 '{"hello":"world"}';
    }

不指定Host请求头可以正常访问
➜  ~ curl 'http://114.55.176.xxx/foo'
{"hello":"world"}%

为什么随意指定了一个Host请求头 就变成了这样了呢?
➜  ~ curl 'http://114.55.176.xxx/foo' -H 'Host: foo.com'
<html>
<head>
<meta http-equiv="Content-Type" content="textml;charset=UTF-8" />
   <style>body{background-color:#FFFFFF}</style>
<title>TestPage184</title>
  <script language="javascript" type="text/javascript">
         window.onload = function () {
           document.getElementById("mainFrame").src= "http://batit.aliyun.com/alww.html";
            }
</script>
</head>
  <body>
    <iframe style="width:860px; height:500px;position:absolute;margin-left:-430px;margin-top:-250px;top:50%;left:50%;" id="mainFrame" src="" frameborder="0" scrolling="no"></iframe>
    </body>
      </html>

都是随意指定的 为什么有些Host请求头有问题 有些就没问题呢?
➜  ~ curl 'http://114.55.176.xxx/foo' -H 'Host: 111.com'
{"hello":"world"}%
➜  ~ curl 'http://114.55.176.xxx/foo' -H 'Host: foo.cn'
{"hello":"world"}%

展开
收起
zhuguowei2 2018-11-02 12:42:46 1307 0
2 条回答
写回答
取消 提交回答
  • 阿里云问答专家、阿里云认证云计算工程师、Java研发工程师
    采纳回答
    您好,未备案的域名拦截有一定的几率不能命中,主要原因还是指定的host没有在阿里云备案,访问被拦截,可以尝试VPC内网测试。
    2018-11-02 12:49:17
    赞同 展开评论 打赏
  • @小川游鱼 但是只不过是Host请求头而已啊(如通过httpclient调用第三方接口需要指定某一Host请求头) 并不是直接访问这个Host啊 这样为什么也要拦截呢 再说也不能给别人的域名进行备案啊
    或者能不能在控制台中关掉拦截这一功能呢 就像关闭打开一个端口一样
    2018-11-02 14:21:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载