问题描述
假设域名为 domain.com,
怎么配置 nginx.conf, 实现 访问 abc.domain.com 的时候实际是 domain.com/abc的内容(浏览器的地址仍然显示成abc.domain.com )
在网上搜的这个配置没有用:
location / { set $domain default; if ( $http_host ~* '^(.*).domain.com$') { set $domain $1; } rewrite ^/(.*) /$domain/$1 last; }
问题解答
回答1:关键部分:
server{ listen 80; server_name www.domain.com; root /var/www/html; index index.php index.html index.htm; location /abc {if ( $host !~* 'abc.domain.com' ){ return 404; #防止有人访问www.domain.com/abc看到abc二级域名的页面,只允许访问abc.domain.com查看} }}server{ listen 80; server_name abc.domain.com; root /var/www/html/abc; index index.php index.html index.htm; location / {#一些配置 }}回答2:
location / { #申明domain变量 set $domain default; #正则提取出二级域名 if ( $http_host ~* '^(.*).domain.com$') { #把二级域名赋值给domain变量set $domain $1; #设置rewrite规则,把/下的所有请求转发到http://domain.com/$domain/下。rewrite ^/(.*)$ http://domain.com/$domain/$1 last; } }回答3:
另外建一个server不就行了嘛!还搞那么复杂,又是正则又是rewrite的。