Назад | Перейти на главную страницу

Вызов RESTful api с использованием поддомена с http-прокси nginx

Я перенаправил поддомены godaddy backend.example.com и app.example.com на один и тот же общедоступный IP-адрес XXX.XXX.XXX.XXX Google Compute Engine. У меня настроен веб-сервер nginx, и мой бэкэнд Springboot обслуживает порт 8090. В настоящее время используется следующая конфигурация:

server {
listen 80;
gzip on;
server_name backend.example.com;
location / {
  root html/example;
  index index.html;
}
location /private {
  proxy_pass https://127.0.0.1:8090;
}
location ~* \.(gif|jpg|jpeg|png|js|css)$ { }
}

Мое веб-приложение работает нормально. Но вызовы RESTful api работают только тогда, когда URL-адрес http://XXX.XXX.XXX.XXX/api/view. когда http://backend.example.com/api/view используется как URL-адрес, возвращаясь после ответа html

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

 <head>
 <title>Backend</title>
 <META name="description" content="Backend">
 </head>
 <frameset rows="100%,*" border="0">
 <frame src="http://XXX.XXX.XXX.XXX" frameborder="0" />
 <frame frameborder="0" noresize />
 </frameset>

 <!-- pageok -->
 <!-- 12 -->
 <!-- -->
 </html>

Я хочу, чтобы ответ JSON подавался в backend.example.com/api/view, как это происходит для XXX.XXX.XXX.XXX/api/view. Я пробовал много разных настроек конфигурации в файле конфигурации nginx, но ничего не работало. Нужны предложения, как это исправить.

Итак, после нескольких дней попыток я наткнулся на выход из ситуации.

Перенаправьте поддомены без маскировки на IP-адрес и создайте зону DNS в Google Cloud DNS. Введите записи имен в Cloud DNS для поддоменов. Скопируйте предоставленные пользовательские серверы имен и вставьте их в записи серверов имен сайтов, на которых размещен ваш домен. Это сработало бы как шарм.