Nginx обслуживает страницу через набор фреймов [closed]

Я использую Nginx для обслуживания прокси-запросов к nodejs, работающим на порту 3000. Вот моя конфигурация:

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>

Следующий запрос касается фактического содержимого. Я исключил node js из уравнения, запустив простой php-скрипт с использованием встроенного php-сервера, работающего на порту 3000. У меня та же проблема.

Я использую nginx / 1.4.6 (Ubuntu).

1
задан 14 February 2015 в 00:02
1 ответ

Проблема была не в сервере. Это был домен, который был настроен на маскировку DNS. Я проверил с помощью dig, где был указан фактический домен, и заметил, что он не указывает на мой сервер. Он указывал на сервер Godaddy, который обслуживал встроенный фрейм, который, в свою очередь, загружал настоящую страницу. Я попросил клиента удалить маскировку домена, и теперь все работает нормально.

1
ответ дан 4 December 2019 в 00:12

Теги

Похожие вопросы