我试图用一种方式来configurationnginx,这将意味着稍后在这条路上摆弄。
我不想为每个域和子域创build一个configuration文件,我想要一个可以处理所有的configuration文件(或者如果子域需要从主域中分离,则需要两个configuration文件)。
例如,假设这些域正在使用中:
当然www和non-www不应该共存 – 所以应该redirect到另一个。 假设在这种情况下,我不是从一个到另一个redirect,他们都应该使用相同的目录。
上面的要点说明了我试图实现的目录结构的types,但是到目前为止,我所有的尝试都失败了。
server { listen 80 default_server; server_name ~^(www\.)?(?<domain>.+)$; # Location of each domain location / { root /var/www/$domain/public; index index.php index.html index.htm; } # ... some other config stuffs }
然后,我试图build立一个子域configuration文件,但是这个似乎总是要主持(这也意味着我不得不命名我的网站文件夹像“example.com”或“example.co.uk”)。
当我去到像“test.example.com”这样的地址时,它会在错误日志中显示为尝试访问/var/www/test.example.com/public 。
有任何想法吗? 非常感谢!
我在CentOS 6.4和nginx 1.0.15上。
这是一个解决scheme。 这不是很优雅,但它的作品。
server { listen 80; server_name ~^(?<domain>[^\.]+)\.(?<tld>[^\.]+)$; root /var/www/$domain/public; location / { index index.php index.html index.htm; } } server { listen 80; server_name ~^(?<subdomain>[^\.]*)\.?(?<domain>[^\.]+)\.(?<tld>[^\.]+)$; root /var/www/$domain/subdomains/$subdomain/public; location / { if ($subdomain = 'www') { root /var/www/$domain/public; } index index.php index.html index.htm; } }
它只适用于两个和三个级别的领域,介意你。 例如,foo.com和test.foo.com,但不是more.test.foo.com。