Редактировать
Более краткая сводка моей проблемы и проблемы заключается в следующем:
У меня есть тестер qa, который должен будет проверить функции на сервере qa, визуально проверив приложение с помощью если вы войдете в домен app.com
, то вам потребуется выполнить серию запросов API почтальона к тому же серверу. Проблема в том, что доменные имена не совпадают.
Таким образом, увидев, что код работает с app.com
, как и ожидалось, qa-tester перейдет к следующим доменам
differentdomain_one.com/users ----> localhost
differentdomain_two.com/blogs ----> localhost
differentdomain_three.com/ ----> localhost
Эти домены обрабатываются app.com, но должны быть вызываемый явно в почтальоне differentdomain_one.com
et c. Я хочу, чтобы эти домены были привязаны к локальному хосту. app.com
установит соответствующую запись A, а apis - localhost. Как я могу это сделать?
##### Редактирование завершено
У меня есть приложение для рабочих рельсов, которое имеет следующий домен:
app.com
Теперь в этом приложении рельсов лежит API-код, который ударил другая конечная точка URL. Эта конечная точка выглядит следующим образом:
api.app.com
Таким образом, в процессе работы пользователи могут выполнять следующие конечные точки:
api.app.com/users
api.app.com/users/1
api.app.com/users/1/posts
et c. et c.
Теперь для моей среды разработки он настроен так, что моим URL для разработки является традиционная конечная точка порта 3000. Приложение находится в разработке:
app.local:3000
С этим URL-адресом URL-адрес API выглядит следующим образом:
api.app.local:3000
А с почтальоном я могу сделать следующие вызовы:
api.app.local:3000/users
api.app.local:3000/users/1
api.app.local:3000/users/1/posts
Стоит отметить, что у меня в /etc/hosts
есть эта запись для API.
127.0.0.1 api.app.local
Имея эту запись в /etc/hosts
, я могу совершать звонки с почтальоном. делать локальные вызовы разработки.
Проблема, с которой я столкнулся, заключается в том, что мне нужно сделать то же самое для моих тестеров qa в развернутой среде только для qa. Я развернул приложение rails в экземпляре ec2. Эта среда имеет следующий URL-адрес, сопоставленный с IP-адресом.
1.2.3.4.5 qa.app.com
Я могу увидеть приложение, отображаемое на экране, прекрасно нажав на qa.app.com
. Проблема сейчас в части API. Я подумал, что то, что нужно сделать, похоже на мою среду разработки, мне нужно что-то поместить в мой /etc/hosts
, но я не уверен, что, хотя.
Вот то, что я попробовал первым. Я попытался поместить следующее в /etc/hosts
.
1.2.3.4.5 api.app.local
Из того, что я могу сказать, это скажет nginx немедленно сопоставить api.app.local
с зарегистрированным ip 1.2.3.4.5
без просмотра DNS. Но сейчас я запутался в Почтальоне. При выполнении приведенного ниже вызова API я получаю сообщение об ошибке, в котором говорится, что почтальон не может подключиться.
Could not get any response
There was an error connecting to https://api.app.local:3000/users.
Я понимаю, что не на локальном хосте, поэтому, возможно, проблема в порте. Однако, если я делаю этот вызов API без порта, я получаю ту же ошибку:
Could not get any response
There was an error connecting to https://api.app.local/users.
Это заставляет меня задуматься, как мне вызывать API из этой среды qa. Это даже правильный подход или директива proxy_pass
будет более подходящей? Это мой nginx conf файл для проверки.
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name 1.2.3.4.5;
passenger_enabled on;
rails_env qa;
root /home/ubuntu/app/public;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
}
Нужно ли добавлять api.app.local
в блок server_name
? Я бы подумал не потому, что у меня это в /etc/host
. Если у кого-то есть знания в этой области, я был бы очень признателен за то, как я могу достичь попадания в API через nginx.