Nginx 通过框架集提供页面服务

Nginx 通过框架集提供页面服务

我正在使用 Nginx 为在端口 3000 上运行的 nodejs 提供代理请求。这是我的配置:

server {
  listen 80;
  server_name example.com;

  root /home/example/app;
  access_log /home/example/access.log;
  error_log /home/example/error.log;

  location / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}

当我在浏览器中访问该网站时,我可以看到服务器的初始响应是一个框架集,然后加载页面。所有这些对于用户来说都是不可察觉的,直到您将鼠标悬停在链接上并看到 IP 地址而不是实际 URL。这是初始响应(其中 1.1.1.1 是我的服务器的实际 IP 地址):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
  <title>My cool site</title>

</head>
<frameset rows="100%,*" border="0">
  <frame src="http://1.1.1.1" frameborder="0" />
  <frame frameborder="0" noresize />
</frameset>

<!-- pageok -->
<!-- 06 -->
<!-- -->
</html>

下一个请求是针对实际内容的。我通过使用在端口 3000 上运行的 php 内置服务器启动一个简单的 php 脚本,从而将 node js 从方程式中剔除。我遇到了同样的问题。

我正在运行 nginx/1.4.6(Ubuntu)。

答案1

问题不在于服务器。而是设置了 DNS 屏蔽的域名。我通过 dig 检查了实际域名指向的位置,发现它没有指向我的服务器。它指向的是 GoDaddy 服务器,该服务器提供内联框架,进而加载实际页面。我要求客户删除域名屏蔽,现在一切正常。

相关内容