2013-06-08 3 views
0

Я использую nginx для запуска нескольких (дополнительных) доменов на одном сервере. Один из них - domain.com, другой api.domain.com. Я хочу использовать серверные вызовы API из основного домена.Вызов localhost на многодоменном сервере nginx

Если бы я сделал HTTP-запрос от domain.com до api.domain.com, будут ли данные выбрасываться с сервера или сервер узнает, что он запрашивается, и немедленно обслуживать запрос? Я прошу, потому что второй может быть быстрее.

Если он не распознает его, я хотел бы сделать запрос на localhost. Однако, когда я вызываю localhost, сервер nginx не знает, какой домен должен обслуживаться. Есть ли способ сказать nginx, как обрабатывать запрос для localhost, передавая запрошенный параметр хоста, чтобы сервер знал, что он должен сервер api.domain.com, а не другой домен на сервере? Если это имеет какое-либо значение, я использую cURL, но я также могу использовать что-либо еще.

ответ

1

Решение добавить строку в файл: /и т.д./хосты

127.0.0.1 api.domain.com 

После сохранения файла, если запустить пинг на сервере он должен вернуть что-то вроде:

[email protected]:~$ ping api.domain.com 
PING api.domain.com (127.0.0.1) 56(84) bytes of data. 
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.026 ms 
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.030 ms 
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.031 ms 
64 bytes from localhost (127.0.0.1): icmp_req=4 ttl=64 time=0.029 ms 

Файл/etc/hosts будет иметь более высокий приоритет, чем DNS-сервер вашего компьютера, чтобы разрешить имя.

Если все настроено правильно, ваш cURL теперь должен использовать localhost для извлечения страницы с страниц api.domain.com. Вы можете проверить это, запустив завиток с многословной опции:

[email protected]:~$ curl --verbose api.domain.com 
* About to connect() to api.domain.com port 80 (#0) 
* Trying 127.0.0.1... connected 

Первые строки даст вам знать, если вы действительно используете локальный IP для запроса!


В очень маловероятном случае, если это не так, проверьте файл: /etc/nsswitch.conf и проверить хозяевам линии выглядеть следующим образом (файлы имеют приоритет над DNS-сервера):

hosts: files dns 
Смежные вопросы