您的位置:首页 > 运维架构 > Nginx

nginx多域名配置

2016-03-15 15:19 447 查看
方法一:多个.conf方法(优点是灵活,缺点就是站点比较多配置起来麻烦)

这里以配置2个站点(2个域名)为例,n个站点可以相应增加调整,假设:


IP地址:192.168.1.100
域名1example1.com放在/www/example1
域名2example2.com放在/www/example2



配置nginxvirtualhosting的基本思路和步骤如下:

把2个站点example1.com,example2.com放到nginx可以访问的目录/www/

给每个站点分别创建一个nginx配置文件example1.com.conf,example2.com.conf,并把配置文件放到/usr/local/nginx/vhosts/
然后在/usr/local/nginx/nginx.conf里面加一句include把步骤2创建的配置文件全部包含进来(用*号)
重启nginx

1、打开/usr/local/nginx/nginix.conf文件,在相应位置加入include把以上2个文件包含进来

userwwwwww;

worker_processes1;

#mainservererrorlog

error_log/usr/local/nginx/log/nginx/error.log;

pid/usr/local/nginx/nginx.pid;

events{

worker_connections51200;

}

#mainserverconfig

http{

includemime.types;

default_typeapplication/octet-stream;

log_formatmain‘$remote_addr–$remote_user[$time_local]$request‘

‘”$status”$body_bytes_sent“$http_referer”‘

‘”$http_user_agent”“$http_x_forwarded_for”‘;

sendfileon;

#tcp_nopushon;

#keepalive_timeout0;

keepalive_timeout65;

gzipon;

server{

listen80;

server_name_;

access_log/usr/local/nginx/log/nginx/access.logmain;

server_name_in_redirectoff;

location/{

root/usr/share/nginx/html;

indexindex.html;

}

}

#包含所有的虚拟主机的配置文件

include/usr/local/nginx/vhosts/*;

}

2、在/usr/local/nginx下创建vhosts目录

mkdir/usr/local/nginx/vhosts

3、在/usr/local/nginx/vhosts/里创建一个名字为example1.com.conf的文件,把以下内容拷进去

server{

listen80;

server_nameexample1.comwww.example1.com;


access_log/www/access_example1.logmain;


location/{

root/www/example1.com;

indexindex.phpindex.htmlindex.htm;

}


error_page500502503504/50x.html;

location=/50x.html{

root/usr/share/nginx/html;

}


#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000

location~.php${

fastcgi_pass127.0.0.1:9000;

fastcgi_indexindex.php;

fastcgi_paramSCRIPT_FILENAME/www/example1.com/$fastcgi_script_name;

includefastcgi_params;

}


location~/.ht{

denyall;

}

}

3、在/usr/local/nginx/vhosts/里创建一个名字为example2.com.conf的文件,把以下内容拷进去

server{

listen80;

server_nameexample2.comwww.example2.com;


access_log/www/access_example1.logmain;


location/{

root/www/example2.com;

indexindex.phpindex.htmlindex.htm;

}


error_page500502503504/50x.html;

location=/50x.html{

root/usr/share/nginx/html;

}


#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000

location~.php${

fastcgi_pass127.0.0.1:9000;

fastcgi_indexindex.php;

fastcgi_paramSCRIPT_FILENAME/www/example2.com/$fastcgi_script_name;

includefastcgi_params;

}


location~/.ht{

denyall;

}

}

5、重启Nginx


/etc/init.d/nginxrestart


方法二:动态目录方法(优点是方便,每个域名对应一个文件夹,缺点是不灵活)


这个简单的方法比起为每一个域名建立一个vhost.conf配置文件来讲,只需要在现有的配置文件中增加如下内容:


#Replacethisportwiththerightoneforyourrequirements
#根据你的需求改变此端口
listen80;#couldalsobe1.2.3.4:80也可以是1.2.3.4:80的形式
#Multiplehostnamesseperatedbyspaces.Replacetheseaswell.
#多个主机名可以用空格隔开,当然这个信息也是需要按照你的需求而改变的。
server_namestar.yourdomain.com*.yourdomain.comhttp://www.*.yourdomain.com/;#Alternately:_*
#或者可以使用:_*(具体内容参见本维基其他页面)
root/PATH/TO/WEBROOT/$host;
error_page404http://yourdomain.com/errors/404.html;access_loglogs/star.yourdomain.com.access.log;
location/{
root/PATH/TO/WEBROOT/$host/;
indexindex.php;
}

#servestaticfilesdirectly

#直接支持静态文件(从配置上看来不是直接支持啊)
location~*^.+.(jpg|jpeg|gif|css|png|js|ico|html)${
access_logoff;
expires30d;
}
location~.php${
#Byallmeansuseadifferentserverforthefcgiprocessesifyouneedto
#如果需要,你可以为不同的FCGI进程设置不同的服务信息
fastcgi_pass127.0.0.1:YOURFCGIPORTHERE;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME/PATH/TO/WEBROOT/$host/$fastcgi_script_name;
fastcgi_paramQUERY_STRING$query_string;
fastcgi_paramREQUEST_METHOD$request_method;
fastcgi_paramCONTENT_TYPE$content_type;
fastcgi_paramCONTENT_LENGTH$content_length;
fastcgi_intercept_errorson;
}
location~/.ht{
denyall;
}


最后附另外一个二级域名匹配的方法


绑定域名
server_name*.abcd.com;
获取主机名
if($host~*(.*).(.*).(.*))
{
set$domain$1;
}
定义目录
roothtml/abc/$domain/;
location/
{
roothtml/abcd/$domain;
indexindex.htmlindex.php;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
章节导航