Как правильно вызвать локальный api url для моего развернутого приложения nginx? - PullRequest
0 голосов
/ 06 апреля 2020

Редактировать

Более краткая сводка моей проблемы и проблемы заключается в следующем:

У меня есть тестер 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.

1 Ответ

0 голосов
/ 07 апреля 2020

Не отображать qa.app.com в /etc/hosts на вашем сервере QA.

Сначала необходимо настроить CNAME в регистраторе домена для сопоставления субдомена с IP-адресом.

Затем вам нужно изменить конфигурацию nginx с server_name 1.2.3.4.5; на server_name qa.app.com; и перезапустить nginx.

PS Для сопоставления DNS с IP-адресом может потребоваться немного времени.

Если вы хотите вызывать локальный API с сервера QA или любых других компьютеров, вам необходимо использовать утилиты туннелирования, такие как ngrok

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...