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

NGINX配置多域名

2012-08-13 13:02 393 查看
方法一:多个.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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: