1
wzxjohn 2014-11-06 19:17:37 +08:00
恕我愚钝,完全不了解你的意思。。。你的两个配置中除了少了一个http以外没看出任何区别。。。
|
2
moto72 OP @wzxjohn 你说的对,就是一个没有http 然后就报404 ,加上http到是页面打开了,但是地址栏的二级域名也变成了 重写后的 www开始的域名了。我想地址栏不变,打开的是 www... ... 的页面内容。
|
5
Havee 2014-11-06 20:04:52 +08:00
看不懂需求,为什么需求是news.domain.com -> www.domain.com/path ,但又要求 $http_host 不变动?
|
6
wzxjohn 2014-11-06 20:06:59 +08:00
|
7
est 2014-11-06 20:30:49 +08:00
|
8
freetg 2014-11-06 21:05:41 +08:00
rewrite ^(.*)$ /data/htdocs/www.domain.com/html/$sub_name.html last;
rewrite带http://是重定向,地址栏不想变,就是不想重定向,直接rewrite到目录文件 |
9
msg7086 2014-11-07 01:27:30 +08:00
rewrite 是用来跳转的。
既然你不跳转,用 alias 应该就行了。 |
10
ericFork 2014-11-07 02:50:52 +08:00
server_name ~(?<category>[^\.]+)\.domain\.com$;
rewrite ^/(.*)\.shtml$ /html/$category/$1.shtml last; 未测试,也不保证完全贴合你的需求,毕竟你描述得也有问题 |
11
lnkisi 2014-11-07 08:28:36 +08:00
你这个server块根本没有定义root,说明不管是什么域名,都是在同一个root。那么你完全没必要把host改写成www.domain.com,还保持原来那个不就可以了。
server { listen 80; server_name *.domain.com; if ($host ~* (.*)\.domain\.com){ set $sub_name $1; rewrite ^(.*)$ /html/$sub_name.html last; } } // PS. 如果当真要改Host,more_set_input_host "Host: $sub_name.domain.com"可以在rewrite阶段末尾完成,这样content阶段读到的Host就是你想要的了。 |
12
lnkisi 2014-11-07 08:29:59 +08:00
跨域的rewrite都一定是返回给浏览器的重定向了。
|
14
sujin190 2014-11-07 09:26:49 +08:00
貌似你需要的proxy
|
16
moto72 OP 感谢大家的帮助,一开始我想纯nginx替换掉webfarm,但是这个从实践上出现问题,现在着手从物理上拆分替换了 :)
|
17
msg7086 2014-11-07 09:56:19 +08:00 via iPhone
还是没明白你要做什么。同机的话用root或者alias不同机用proxy_pass
|