Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: вопрос по rewrite и subdomain
- To: nginx-ru@xxxxxxxxx
- Subject: Re: вопрос по rewrite и subdomain
- From: Vladislav Vorobiev <mymir.org@xxxxxxxxxxxxxx>
- Date: Thu, 25 Mar 2010 06:49:49 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=p4aG8ZyXUM3QQXgolx07/Tfr0l3WU8/n/dd/yVOIYc8=; b=GDLWhhzYggQWbMmXk+WNrd9sMER753PxIby2qdDwzeIWJ4NHMhGDwSuQ7P8/vRLmuB kTiImFgXOYMDn6rm3o4e2+a0VMrv4pg9bsx/nD6kwmURyZ4Pr3teBr4MGdPkCz85pXcB i1N/6Ln/52ctcHswI1CKA8i28cw07GW7J0V64=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=pS8uHHNyjlFyFoi+nYUdm8RUnKZWIMxalaFj8LEXQCNtFDBRKPHlRi1rrHlILWJGqJ LPvR3dWU7gfPzRDZAvlKDHfSM4tiz9a5m7hdaXnFKttFMaPNKpojq13cYUD1iaz8qIyU jfIdYHnmh4+HEm1759M6WlUZ6rSF9raiTx9hY=
- In-reply-to: <e38409e320078ea6b6f65bdabffa3763.NginxMailingListRussian@xxxxxxxxxxxxxxx>
- References: <e38409e320078ea6b6f65bdabffa3763.NginxMailingListRussian@xxxxxxxxxxxxxxx>
- Resent-date: Thu, 25 Mar 2010 09:37:59 +0300
- Resent-date: Thu, 25 Mar 2010 09:37:59 +0300
- Resent-from: Igor Sysoev <igor@xxxxxxxxx>
- Resent-message-id: <20100325063759.GA65660@xxxxxxxxxxxxx>
- Resent-to: nginx-ru@xxxxxxxxx
> Здравствуйте.
>
> Уткнулся в такую проблему.
> Есть сайт с такой структурой
> http://domain.com/catalog/firm1
> http://domain.com/catalog/firm2
>
> Появилось желание у владельца сделать, что бы странички компаний были
> доступны в виде
> http://firm1.domain.com/
> http://firm2.domain.com/
>
> Изначально добавил в конфиг server_name *.domain.com и попытался решить
> вопрос реврайтом:
>
> if ($host ~* ^(+)\.domain.com$) {
> set $subdomain $1;
> rewrite ^ /index.php/enterprises/$subdomain last;
> break;
> }
>
> По итогу получил на поддоменах отображение корня сайта.
> Перечитал список рассылки и форум, пошел по рецептам, сделал второй виртуал
> хост в который вынес обработку поддоменов:
>
> server {
> listen 80;
> server_name ~^([^.]+)\.domain\.com$;
> set $subdomain $1;
> server_tokens off;
>
> send_timeout 120;
>
> root /usr/local/www/nginx;
> index index.php;
> fastcgi_index index.php;
>
> rewrite \.(js|ico|gif|jpg|png|css|flv)$ /$uri
> break;
> #Тут пробовал еще rewrite ^ /index.php$uri$subdomain break;
> rewrite /
> /index.php$uri$subdomain break;
>
> location ~ \.php {
> include fastcgi_params;
> keepalive_timeout 0;
> expires 30d;
> fastcgi_param SCRIPT_FILENAME
> $document_root$fastcgi_script_name;
> fastcgi_pass 127.0.0.1:9000;
> }
>
> }
>
> В результате тот же эффект - корень сайта.
>
> debug лог:
> 2010/03/24 20:16:28 52531#0: *10862 "/" matches "/", client: 89.252.34.110,
> server: ~^([^.]+)\.domain\.com$, request: "GET / HTTP/1.1", host:
> "firm1.domain.com"
> 2010/03/24 20:16:28 52531#0: *10862 rewritten data: "/index.php/firm1",
> args: "", client: 89.252.34.110, server: ~^([^.]+)\.domain\.com$, request:
> "GET / HTTP/1.1", host: "firm1.domain.com"
>
> nginx -V
> nginx version: nginx/0.8.33
> configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I
> /usr/local/include' --with-ld-opt='-L /usr/local/lib'
> --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx
> --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log
> --user=www --group=www
> --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
> --http-proxy-temp-path=/var/tmp/nginx/proxy_temp
> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
> --http-log-path=/var/log/nginx-access.log --with-http_dav_module
> --with-http_flv_module --with-http_geoip_module
> --with-http_gzip_static_module --with-http_perl_module
> --with-http_realip_module --with-http_stub_status_module --with-pcre
>
> В чем я туплю и почему открывается только корень, понять не могу. Прошу
> помощи. Свои идеи закончились.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,67477,67477#msg-67477
>
Возможно поможет, подаст идею. Только у меня с proxy_pass
server {
server_name *.mydomain.net;
listen 80;
location / {
set $name de;
if ($host ~ ^(.+).mydomain.net$) {
set $name $1;
}
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass
http://localhost:8080/$name.mydomain.net:80/$name/$uri?$query_string;
}
}
--
Best Regards
Vlad Vorobiev
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|