转贴:正在研究这方面,转过来看。。
当访问http://abc.test.com跳转到http://www.test.com/test/abc/
方法一:
这种方法浏览器地址会变www.test.com/test/abc
实现访问如下:
server {
listen 80;
server_name www.test.com;
location / {
root /data/test;
index index.html;
}
}
server {
listen 80;
server_name *.test.com;
if ( $http_host ~* "^(.*)\.test\.com$") {
set $domain $1;
rewrite ^(.*) http://www.test.com/test/$domain/ break;
}
}
实现结果
C:\>wget.exe -S http://abc.test.com/
--2009-07-10 00:46:12-- http://abc.test.com/
Resolving abc.test.com... 127.0.0.1
Connecting to abc.test.com|127.0.0.1|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 302 Moved Temporarily
Server: nginx/0.8.4
Date: Thu, 09 Jul 2009 16:46:12 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: http://www.test.com/test/abc/
Location: http://www.test.com/test/abc/ [following]
--2009-07-10 00:46:12-- http://www.test.com/test/abc/
Resolving www.test.com... 127.0.0.1
Reusing existing connection to abc.test.com:80.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: nginx/0.8.4
Date: Thu, 09 Jul 2009 16:46:12 GMT
Content-Type: text/html
Content-Length: 21
Last-Modified: Thu, 09 Jul 2009 16:27:41 GMT
Connection: keep-alive
Accept-Ranges: bytes
Length: 21 [text/html]
Saving to: `index.html.19'
100%[======================================>] 21 --.-K/s in 0s
2009-07-10 00:46:12 (936 KB/s) - `index.html.19' saved [21/21]
方法二、
当访问http://abc.test.com跳转到http://www.test.com/test/abc/
这样配置浏览器的地址就会显示成http://abc.test.com
server {
listen 80;
server_name *.test.com;
root /usr/local/www;
location ~ ^/(test|images|styles)/ 这是里可以加多个目录,如果不加目录,会无法访问到abc.test.com/目录下的文件,如图片目录/images
{
proxy_redirect off;
proxy_set_header Host www.test.com;
proxy_pass http://192.168.1.2:8080;
}
location / {
set $domain default;
if ( $http_host ~* "^(.*)\.test\.com$") {
set $domain $1;
}
rewrite ^/(.*) /test/$domain/$1 last;
http://blog.sina.com.cn/s/blog_470302440100eveq.html
nginx二级域名配置(rewrite)