Я перенаправил поддомены 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 для поддоменов. Скопируйте предоставленные пользовательские серверы имен и вставьте их в записи серверов имен сайтов, на которых размещен ваш домен. Это сработало бы как шарм.