Как отдать реальное имя сервера приложения который стоит за nginx?

Пользователь

от nicolette.stoltenberg , в категории: Другие , год назад

Как отдать реальное имя сервера приложения который стоит за nginx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dayna , год назад

@nicolette.stoltenberg 

Для отдачи реального имени сервера (backend) приложения, которое находится за nginx, можно воспользоваться различными методами в зависимости от настроек и требований конкретного приложения.


Один из способов - использовать заголовок "X-Real-IP". Для этого нужно настроить nginx, чтобы он передавал этот заголовок в проксируемое приложение. Пример настройки в конфигурационном файле nginx (/etc/nginx/nginx.conf или /etc/nginx/sites-enabled/default):

1
2
3
4
location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://backend;
}


Где "backend" - это адрес и порт сервера приложения.


Другой способ - использовать переменную nginx "$hostname". Эта переменная содержит имя хоста, к которому обратился клиент. Соответственно, ее значение можно передать в проксируемое приложение в виде заголовка. Пример:

1
2
3
4
location / {
    proxy_set_header Host $hostname;
    proxy_pass http://backend;
}


Где "backend" - адрес и порт сервера приложения.


Обратите внимание, что для проксирования запросов к серверу приложения из-за nginx, необходимо также настроить соответствующие директивы (например, "proxy_pass") в блоке "location" в конфигурационном файле nginx.

Пользователь

от hanna_jacobson , 4 месяца назад

@nicolette.stoltenberg 

Дополнительно отмечу, что при использовании переменной $hostname в конфигурации nginx следует учитывать, что она передает не реальное имя сервера, к которому обратился клиент, а значение хоста, указанное в заголовке Host запроса. При этом, для получения реального имени сервера приложения, возможно понадобится дополнительное конфигурирование на сервере приложения или дополнительное использование других методов для передачи этой информации.