Re: странность

Doronin Sergey nophear at yandex.ru
Sat Feb 14 14:34:55 MSK 2009



> On Sat, Feb 14, 2009 at 01:56:26PM +0300, Doronin Sergey wrote:
> 
> > > On Sat, Feb 14, 2009 at 11:48:57AM +0300, Doronin Sergey wrote:
> > > > Ребят, у меня творятся какие-то странные вещи. Тех-поддержка хостинга молчит, поэтому обращаюсь к вам.
> > > > У меня установлен nginx и apache. Стандартная схема. В конфигах тоже ничего мудрёного или экзотического нет, если надо, могу скопи-пастить.
> > > > Описываю проблему.
> > > > 
> > > > Предположим на сайте есть каталог "catalog". Мы можем зайти на него через URI: mysite.ru/catalog/
> > > > Он открывается, всё ок. Но если попробовать зайти на URI: mysite.ru/catalog
> > > > Сайт не открывается! FireFox выводит ошибку: Соединение было сброшено. А URI в адресной строке меняется на: mysite.ru:8000/catalog/
> > > > В логах апача я вижу следующее:
> > > > 1.2.3.4 - - [14/Feb/2009:11:40:53 +0300] "GET /catalog HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6"
> > > > 
> > > > 301 ошибка означает - Moved Permanently
> > > Это не ошибка. Это такой код ответа.
> > > > Скажите пожалуйста, с чем это может быть связано? В какой участок конфига мне заглянуть и в какую сторону копать? Заранее, спасибо!
> > > Как выглядит блок с proxy_pass ?
> > > 
> > > Возможно, в него нужно добавить
> > > 
> > > proxy_redirect http://mysite.ru:8000/ /;
> > Было:
> > proxy_redirect off;
> > Изменил на:
> > proxy_redirect http://mysite.ru:8000/ /;
> > 
> > Проблема осталась.. Также код ответа 301 и соединение сброшено..
> 
> Как выглядит блок с proxy_pass ?
        location / {

            proxy_pass         http://myip:8000;
#            proxy_redirect     off;
		proxy_redirect http://myip:8000/ /;

            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

            client_max_body_size       14m;
            client_body_buffer_size    128k;

            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;

            proxy_buffer_size          8k;
            proxy_buffers              8 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
            }



         	# Static files location
	    location ~* ^.+\.(jpg|jpeg|gif|png|ico|mp3|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|dat|avi|ppt|txt|tar|mid|midi|wav|bmp|rtf|wmv|mpeg|mpg|tbz|js)$ {
                access_log   off;
	        root   /home/myhost/myhost.ru/docs/$subdomain;
                set $subdomain "";
                        if ($host ~* ^([a-z0-9-\.]+)\.myhost.ru$) {
                                set $subdomain "subdmn/$1";

                                }
                        if ($host ~* ^www.myhost.ru$) {
                                set $subdomain "";
                                }

                     }

         }

> 
> > > > ЗЫ есть подозрение, что это связано со следующей rewrite конструкцией, которая убирает 8000 порт из URI:
> > > > RewriteEngine On
> > > > RewriteBase /
> > > > RewriteCond %{HTTP_HOST} ^mysite.ru:8000$
> > > > RewriteRule ^(.*)$ http://mysite.ru/$1 [L,R=301]
> > > > 
> > > > Конструкцию тупо взял с форума хостинга, поэтому не знаю что к чему..
> > > А я-то думаю, откуда берутся все эти
> > > 
> > > server {
> > > if ($http_host ~ ...) {
> > > rewrite ...
> > > }
> > > 
> > > Похоже, иначе, как через RewriteRule'ы Апач люди конфигурить не умеют.
> > Это значит rewrite в конфиге nginx лучше прописывать?
> 
> Это значит, что и в nginx'е, и в Апаче есть другие средства для работы
> с HTTP_HOST, но люди с mod_rewrite-мозгами про них не знают.
> В nginx'е это server/server_name, в Апаче - <VirtualHost>/ServerName.
> 
> Конкретно эти директивы на данную ситуацию влиять не должны, потому что
> они наоброт меняют 8000 на 80.
> 
> -- 
> Игорь Сысоев
> http://sysoev.ru
> 






More information about the nginx-ru mailing list