对于批量添加虚拟主机的需求,Apache 有 vhost_alias 模块帮忙。Nginx 呢?其实神马都不需要,同样可以实现 Nginx 二级域名匹配子文件夹,且不匹配 "www",但可以匹配包含 "www" 的子域名。
首先看看目前网上搜到的方法。
复制代码代码如下:
<?php
if ( $host ~* (.*)\.(.*)\.(.*)) { set $subdomain $1; } location / { root html/$subdomain; index index.html index.php; } 上面的 "~*" 表示不区分大小写,然后就是匹配任何 "xxx.xxx.xxx" 类型的网址,最后就悲剧了,不仅匹配了 "www.yourdomian.com" 甚至连 "我艹.$!@.com" 这类网址也匹配了。
嗯,没错!这是一个正则问题。.
复制代码代码如下:
<?php
if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) { set $subdomain /$1; } location / { root /home/wangyan/public_html$subdomain; index index.html index.php; }
效果,下图可以看到,已经实现了,不匹配 "www" 但可以匹配包含 "www" 的子域名。 使用方法,请将上面代码复制到 server {} 标签中,然后重启nginx即可。 FAQ:
1)、请问:我临时测试,需要在访问网站时打开nginx代理服务器本地的一个页面文件(tmp.html),应该如何配置?
2)、按照你的配置实现了二级域名到子目录,但是,现在的问题是二级域名下的html文件访问正常,但php文件访问不到,报错:No input file specified.
复制代码代码如下:
server {
if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
location / {
location ~ .*\.(php|php5)?$ {
搞定了,location ~ .*\.(php|php5)?$
复制代码代码如下:
{
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; }
中加入fastcgi_param script_FILENAME /webroot/xxx.net/$subdomain$fastcgi_script_name;
回复:
再问:
复制代码代码如下:
server {
*****以下省略
我不需要用户使用abc.com访问的时候直接跳转到www.abc.com;但是使用event.abc.com cont.abc.com这两个访问的时候,地址不变。
回复:
复制代码代码如下:
if ( $host = wangyan.org) {
rewrite (.*) http://www.wangyan.org$1 permanent; }
3)、应该加上subdomain不存在时的处理
4)、负载均衡的情况下,子域名无法访问。
复制代码代码如下:
upstream app {
server 192.168.1.13:8001; server 192.168.1.3:8080; } server { listen 80; server_name *.ee.com; if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) { set $subdomain /$1; } location / { proxy_pass http://app/$subdomain; index index.html index.php; } }
回复:
路径没有问题
复制代码代码如下:
upstream app {
server 192.168.1.13:8001; server 192.168.1.3:8080; }
这二台server 是tomcat
复制代码代码如下:
server_name *.ee.com;
if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) { set $URL $1; } location / { proxy_pass http://app/$URL/; index index.html index.php; } } 这样就可以了,但是用ee.com访问就不行,www.ee.com和其他子域名都没有问题;只是网站的CSS全部乱了。
5)、我请教个问题:我的网站根目录是/wwwdoc/myweb/
回复:
复制代码代码如下:
server {
server { (责任编辑:IT) |