Я пытаюсь перенаправить с mydomain.com на www.mydomain.com .. Однако nginx переписывает заголовок местоположения на $ host.
server{
server_name mydomain.de;
set $root /srv/www/mydomain.de;
listen 8080;
root $root;
index index.html index.htm;
location / {
rewrite ^(.*) http://www.google.de$1 permanent;
}
add_header Cache-Control private;
}
server_tokens off;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 2048 8k;
client_max_body_size 100M;
client_body_buffer_size 100M;
server_names_hash_max_size 1024;
Так выглядит моя конфигурация сервера. Но я не перенаправлен в Google, а застрял в цикле перенаправления. У меня есть много правил перезаписи на другом сервере-хосте (www.mydomain.de), но они, похоже, не связаны, поскольку этот виртуальный хост даже не используется.
Error.log читается следующим образом:
2012/10/24 17:26:26 [notice] 2244#0: *175 "^(.*)" matches "/", client: 127.0.0.1, server: mydomain.de, request: "GET / HTTP/1.1", host: "mydomain.de"
2012/10/24 17:26:26 [notice] 2244#0: *175 rewritten redirect: "http://www.google.de/", client: 127.0.0.1, server: mydomain.de, request: "GET / HTTP/1.1", host: "mydomain.de"
Кто-нибудь знает как решить мою проблему? Я понятия не имею, что происходит не так ... Спасибо.
Изменить: даже это не работает:
server{
server_name test.prod-web.hrm;
listen 8080;
location / {
rewrite ^(.*) http://www.google.de$1 permanent;
}
}
Просто создайте дополнительный сервер для перезаписи:
server {
listen 192.168.1.234:80;
server_name example.com; # your domain name
rewrite ^/(.*) http://www.example.com/$1 permanent;
}
Так и должно быть. Обратите внимание на косую черту, которой вам не хватает
Я бы не стал использовать rewrite
для этого вообще.
Вместо этого попробуйте следующее:
return 301 $scheme://www.example.com$request_uri$is_args$args;
Если это не удается, возможно, проблема связана с чем-то другим в вашей среде.