Перейти к содержимому
Калькуляторы

nginx+apache redirect www.domain.com -> domain.com

Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал делать rewrite только на nginx'e - не работает. Добавил ещё и на apache - и получаю зацикливание.

Как правильно сделать редирект в моём случае?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

rewrite пока убрал.

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;                                                                             
     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;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте добавить в server_name, свой www хост, и после этого добавить реврайт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Помогло, если добавить в apache такое

 

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 как вам предлагали.

На мой взгляд не правильно "проваливать" запросы до апача, для того чтобы опять их редиректнуть на nginx.

 

Как вариант сделать конфигурацию вида

 

server {

server_name www.domain.com;

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

}

 

server {

server_name domain.com;

...

}

Изменено пользователем pchol

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2skeletor

А что не получилось, что наблюдаете и что в логах? Последняя конфигурация, предложенная pchol является рекомендуемой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наблюдаю такую картину: в Firefox'e лишних слешей нет, зато есть в Opera и Chrome. Не знаю с чем может быть связано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем спасибо, разобрался. Код редиректа, приведённый здесь действительно рабочий.

Проблема была в том, что хост с сайтом вообще не инклюдился в nginx.

Теперь всё работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас