У меня есть ситуация, которая, как мне кажется, немного отличается от большинства других. Это определенно отличается от всего, что я встречал раньше:
Я создаю сайт для клиента, который хочет / должен сохранить полный контроль над своим каноническим доменом. Вместо того, чтобы просто указывать www.theirdomain.com
и theirdomain.com
на мой IP-адрес сервера, они хотят направлять к ним трафик и позволять своему устройству Big-IP отправлять этот трафик нам на client.mydomain.com
. Я не знаю Big-IP, но подозреваю / предполагаю, что это переписывание, и пользователь увидит только theirdomain.com
.
Кроме того, у клиента есть 2 поддомена, целевые страницы которых будут обслуживаться моим приложением, и их команда по информационной безопасности не хочет иметь с ними ничего общего. Они просто обновляют DNS для этих доменов, чтобы они указывали на мой сервер. Однако целевые страницы обслуживаются по адресу client.mydomain.com/path/to/landing/page
.
Поскольку мы не хотим, чтобы конечные пользователи когда-либо видели client.mydomain.com
тем не менее, мой обычный процесс перенаправления 301 на отвечающий URL, похоже, создает некоторый ненужный трафик:
sub.theirdomain.com
www.theirdomain.com/path/to/landing/page
На шаге 2, вместо перенаправления на их устройство, могу ли я просто переписать URL-адрес на www.theirdomain.com
и обслуживать контент напрямую? Также приветствуются лучшие идеи. Как я уже сказал, я не сталкивался с этим раньше и ищу варианты.
У нас есть несколько клиентов, которые настроили его таким образом, чтобы они сохраняли контроль над своим собственным DNS, поскольку у некоторых из них есть только субдомены, которые указывают на нас. Мы используем nginx в качестве балансировщика нагрузки, который также обрабатывает перенаправления, и у нас есть перенаправления в файле vhost по умолчанию (00default). Ничего особенного, у нас это работает хорошо:
if ($host ~* "^ourdomain.com$") {
rewrite ^(.*)$ http://www.ourdomain.com$1 permanent;
}
if ($host ~* "^subdomain.otherdomain.com$") {
rewrite ^(.*)$ https://ourdomain.com$1 permanent;
}
if ($uri !~* (/option/.*|/simple/.*|/embed/.*|/mini/.*|/someOtherOption\.action.*|/otherOption\.action.*|/file/[0-9a-zA-Z]+/html5.*|/file/[0-9a-zA-Z]+/html5mobile.*|/thumbnail/.*) ) {
set $cname_match "N";
}
if ($host !~* "(.*\.)?ourdomain\.com|videos\.yetanotherdomain\.com") {
set $cname_match "${cname_match}N";
}
if ($cname_match = "NN") { rewrite ^.*$ http://www.ourdomain.com/; }
if ($uri !~* (/thumbnail_.*|/vcomments/.*|/onethmb.gif$|/crossdomain.xml$|/otherthmb[0-9]+.gif$)) {
set $thumb_redirect "Y";
}
if ($host ~* "^(cdn-)?thumbs\.ourdomain\.com") {
set $thumb_redirect "${thumb_redirect}Y";
}
if ($thumb_redirect = "YY") { rewrite ^.*$ http://www.ourdomain.com/ permanent; }
location / {
proxy_pass http://ourdomain_apache_pool;
error_page 404 @fallback404;
error_page 403 @fallback403;
}
# redirects
location /learn-more {
rewrite /learn-more/? http://www.ourdomain.com/features permanent;
}
# help
location ~* ^/help/zendesk/*.*$ {
proxy_pass http://ourdomain_ruby_pool;
}
location ~* ^/help/*.* {
rewrite ^/(.*) http://support.ourdomain.com permanent;
}
Мне кажется, что вы можете взять одно из приведенных выше правил перезаписи, например:
if ($host ~* "^subdomain.otherdomain.com$") {
rewrite ^(.*)$ https://ourdomain.com$1 permanent;
}
и просто попросите их указать DNS на свой домен на вашем сервере, а затем перепишите его по своему усмотрению.