URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7604
[ Назад ]

Исходное сообщение
"nginx+apache redirect www.domain.com -> domain.com"

Отправлено skeletor , 13-Сен-12 15:48 
Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал делать rewrite только на nginx'e - не работает. Добавил ещё и на apache - и получаю зацикливание.
Как правильно сделать редирект в моём случае?

Содержание

Сообщения в этом обсуждении
"nginx+apache redirect www.domain.com -> domain.com"
Отправлено parad , 13-Сен-12 18:17 
что делал, что не работает?

"nginx+apache redirect www.domain.com -> domain.com"
Отправлено skeletor , 13-Сен-12 18:20 
> что делал, что не работает?

Пробовал очень много вариантов, так что сюда даже приводить страшно.

Пока вот так сработало.


RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]

То есть добавил только в апач. nginx без rewrite'ов. Но есть проблема - оно добавляет лишний слеш в конец, и в итоге становиться так:
http://domain.com//menu.php. Как побороть ?

"nginx+apache redirect www.domain.com -> domain.com"
Отправлено parad , 13-Сен-12 23:34 

  rewrite ^(/.*)$ http://domain.com$1 permanent;


"nginx+apache redirect www.domain.com -> domain.com"
Отправлено PavelR , 14-Сен-12 10:12 
> Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал
> делать rewrite только на nginx'e - не работает. Добавил ещё и
> на apache - и получаю зацикливание.
> Как правильно сделать редирект в моём случае?

В Nginx нужна отдельная секция server {} для www.domain.com в которой написать редирект.
правильный rewrite для этого уже написали выше.


"nginx+apache redirect www.domain.com -> domain.com"
Отправлено skeletor , 14-Сен-12 13:44 
>> Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал
>> делать rewrite только на nginx'e - не работает. Добавил ещё и
>> на apache - и получаю зацикливание.
>> Как правильно сделать редирект в моём случае?
> В Nginx нужна отдельная секция server {} для www.domain.com в которой написать
> редирект.
> правильный rewrite для этого уже написали выше.

Не помогло. Причём firefox отображает без лишних слешей, а вот opera, chrome - с ними.


"nginx+apache redirect www.domain.com -> domain.com"
Отправлено PavelR , 14-Сен-12 14:34 
>>> Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал
>>> делать rewrite только на nginx'e - не работает. Добавил ещё и
>>> на apache - и получаю зацикливание.
>>> Как правильно сделать редирект в моём случае?
>> В Nginx нужна отдельная секция server {} для www.domain.com в которой написать
>> редирект.
>> правильный rewrite для этого уже написали выше.
> Не помогло. Причём firefox отображает без лишних слешей, а вот opera, chrome
> - с ними.

хрустальный шар, в котором я обычно смотрел ваши конфиги и логи запросов, к сожалению упал и разбился. Так что смотрите в них сами.


"nginx+apache redirect www.domain.com -> domain.com"
Отправлено skeletor , 14-Сен-12 15:47 
Склеил ваш хрустальный шар и вот, что в нём видел.

server {

        listen XX.XX.XX.XX;
        server_name domain.com;
        root /usr/local/www/domain.com;
        access_log off;

   location / {
        try_files $uri @backend;
        index index.html;
   }

  location ~ \.php$ {
      proxy_pass         http://127.0.0.1:8080;
      proxy_redirect     default;
      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      client_max_body_size       10m;
      client_body_buffer_size    128k;                                                                                      
      proxy_send_timeout         180s;                                                                                      
      proxy_read_timeout         180s;                                                                                      
      proxy_buffer_size          32k;                                                                                      
      proxy_buffers              16 32k;                                                                                    
      proxy_busy_buffers_size    64k;                                                                                      
      proxy_temp_file_write_size 64k;                                                                                      
  }                                                                                                                        

  location @backend {                                                                                                      
      proxy_pass         http://127.0.0.1:8080;      &n...
      proxy_redirect     default;                                                                                          
      proxy_set_header   Host             $host;                                                                            
      proxy_set_header   X-Real-IP        $remote_addr;
      client_max_body_size       10m;
      client_body_buffer_size    128k;
      proxy_send_timeout         180s;
      proxy_read_timeout         180s;
      proxy_buffer_size          32k;
      proxy_buffers              16 32k;
      proxy_busy_buffers_size    64k;
      proxy_temp_file_write_size 64k;
    }


      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
      root   /usr/local/www/nginx-dist;

}



"nginx+apache redirect www.domain.com -> domain.com"
Отправлено PavelR , 14-Сен-12 17:08 
> Склеил ваш хрустальный шар и вот, что в нём видел.

Люди, хорош [..censored..] прикидываться.

Я ж русским языком написал:

==cite==
В Nginx нужна отдельная секция server {} для www.domain.com в которой написать редирект.
правильный rewrite для этого уже написали выше.
==cite==

Вы мне на это что ответили ?

==cite==
Не помогло. Причём firefox отображает без лишних слешей, а вот opera, chrome - с ними.
==/cite==

Дальше вы мне приводите свой конфиг.

ТАК ВОТ.
ГДЕ В НЕМ:

- отдельная секция server {} ?
- где в нем вышеупомянутый rewrite ?


Кроме того, вы в лог-то посмотрели?


"nginx+apache redirect www.domain.com -> domain.com"
Отправлено skeletor , 14-Сен-12 18:49 
Пробовал вот так, но так как время тестов уже истекло (сайт в продакшине), то пришлось выбросить куски кода, которые для сайта ничего не делают, поэтому и выложил без них. Но я пробовал ваш пример вот так:

server {
        listen XX.XX.XX.XX;
        server_name www.domain.com;
        rewrite ^(/.*)$ http://domain.com$1 permanent;
}

server {

        listen XX.XX.XX.XX;
        server_name domain.com;
        root /usr/local/www/domain.com;
        access_log off;
...


в логах ничего подозрительного.

"nginx+apache redirect www.domain.com -> domain.com"
Отправлено PavelR , 15-Сен-12 08:29 
> Пробовал вот так, но так как время тестов уже истекло (сайт в
> продакшине), то пришлось выбросить куски кода, которые для сайта ничего не
> делают, поэтому и выложил без них. Но я пробовал ваш пример
> вот так:

теперь идем дальше. Научитесь тестировать редиректы не браузером, а консольными утилитами (curl, wget, GET из lwp-perl, что-то еще ...), или хотя бы кеши сбрасывайте, вкладки/браузеры закрывайте-открывайте, потому что конфиг 100% верен.



"nginx+apache redirect www.domain.com -> domain.com"
Отправлено parad , 16-Сен-12 23:25 
он скорее всего забыл убрать редирект в апаче.
и также логи не научился читать.

"nginx+apache redirect www.domain.com -> domain.com"
Отправлено parad , 16-Сен-12 23:26 
а неработает как? поведение опиши.
то что в логах ничего подозрительного говорит только о том что все работатет как надо.

"nginx+apache redirect www.domain.com -> domain.com"
Отправлено skeletor , 17-Сен-12 15:38 
Всем спасибо, разобрался. Код редиректа, приведённый здесь действительно рабочий. Проблема была в том, что хост с сайтом вообще не инклюдился в nginx.
Теперь всё работает.