Jump to content
Калькуляторы

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

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

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

Share this post


Link to post
Share on other sites

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;

}

Share this post


Link to post
Share on other sites

Помогло, если добавить в 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. Как побороть ?

Share this post


Link to post
Share on other sites

Попробуйте все таки через nginx как вам предлагали.

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

 

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

 

server {

server_name www.domain.com;

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

}

 

server {

server_name domain.com;

...

}

Edited by pchol

Share this post


Link to post
Share on other sites

2skeletor

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.