См. статью Building Secure ASP.NET Applications: Аутентификация, Авторизация и Безопасная Коммуникация.
Это даст Вам лучшее понимание идентификационных данных, используемых Вашим приложением ASP.NET при исполнении роли. Дайте необходимое разрешение, и Вы хороши.
HTH
Самым легким решением было бы просто использование DNS для отображения foo.cust.mydomain.example
к определенному IP сервера, как womble предложенный. Это пропустило бы весь прокси-сервер. Возможно, это не возможно для Вас, например, если у Вас нет общедоступных IP-адресов для серверов бэкэнда.
Направление всех запросов к одному серверу (с подстановочным знаком DNS) и затем передача запросов динамично согласно заголовку Хоста немного более сложны, и кажется, что HAProxy не может сделать этого, потому что каждый сервер бэкэнда должен быть явно определен в конфигурации HAProxy.
Nginx, тем не менее, отличается с правильной конфигурацией, Nginx может использовать заголовок Хоста для выбора бэкенда. Nginx нужен сервер DNS, который отображает имена к адресам бэкенда, конечно.
Вот небольшой пример конфигурации:
server {
listen 80 default;
location / {
# You might need to send some headers to the backend server
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
resolver 192.0.2.1; # DNS server IP
# Forward all requests to the backend server using $http_host
# (this is the 'Host:' header value)
proxy_pass http://$http_host$request_uri;
}
}
Это перенаправляет http://myserver.cust.mydomain.example/foo/
кому: http://myserver.cust.mydomain.example/foo/
. Не кажется очень полезным на первый взгляд. Но если Вы настраиваете частный сервер DNS, который отображается, те имена к серверу бэкэнда обращается, запрос на самом деле передается к корректному серверу бэкэнда на частном адресе.
Но, этот вид настройки сервера DNS не мог бы быть желаем и мог вызвать проблемы в некоторых случаях. Так, с некоторыми дополнениями к конфигурации Nginx мы можем проявить другой подход:
location / {
# headers...
resolver 192.0.2.1;
# A regex to get the first part (hostname) from the Host header
if ($http_host ~* "([a-z0-9-]+)(\.[a-z0-9-]+)*") {
# Save a captured part from the regex to a variable
set $redirect_hostname $1;
# Pass the request to a desired backend
proxy_pass http://$redirect_hostname.private.mydomain.example$request_uri;
}
}
Теперь перенаправление идет от http://myserver.cust.mydomain.example/foo/
кому: http://myserver.private.mydomain.example/foo/
. Сервер DNS может содержать частные адреса под другим доменом, и proxy_pass
директива может быть изменена для соответствия желаемой конфигурации сервера имен.
Я все еще думаю, что этот вид проксирования не мог бы быть самым легким способом решить целое изображение, но это - одна возможность, в конце концов. Я счастлив, если это имело какую-либо справку.
Ссылки: Nginx Wiki, особенно HttpProxyModule и HttpRewriteModule