{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
nginx绑定多个域名,可把多个域名规则写一个配置文件里,也可分别建立多个域名配置文件,一般为了管理方便,建议每个域名建一个文件,有些同类域名也可写在一个总的配置文件里。
一、每个域名一个文件的写法
首先打开nginx域名配置文件存放目录:/usr/local/nginx/conf/servers,如要绑定域名www.itblood.com则在此目录建一个文件:www.itblood.com.conf然后在此文件中写规则,如:
server{
listen80;
server_namewww.itblood.com;#绑定域名
indexindex.htmindex.htmlindex.php;#默认文件
root/home/www/itblood.com;#网站根目录
includelocation.conf;#调用其他规则,也可去除
}
然后重起nginx服务器,域名就绑定成功了nginx服务器重起命令:/etc/init.d/nginxrestart
二、一个文件多个域名的写法
一个文件添加多个域名的规则也是一样,只要把上面单个域名重复写下来就ok了,如:
server{
listen80;
server_namewww.itblood.com;#绑定域名
indexindex.htmindex.htmlindex.php;#默认文件
root/home/www/itblood.com;#网站根目录
includelocation.conf;#调用其他规则,也可去除
}
server{
listen80;
server_namemsn.itblood.com;#绑定域名
indexindex.htmindex.htmlindex.php;#默认文件
root/home/www/msn.itblood.com;#网站根目录
includelocation.conf;#调用其他规则,也可去除
}
三、不带www的域名加301跳转
如果不带www的域名要加301跳转,那也是和绑定域名一样,先绑定不带www的域名,只是不用写网站目录,而是进行301跳转,如:
server
{
listen80;
server_nameitblood.com;
rewrite^/(.*)http://www.itblood.com/$1permanent;
}
四、添加404网页
添加404网页,都可又直接在里面添加,如:
server{
listen80;
server_namewww.itblood.com;#绑定域名
indexindex.htmindex.htmlindex.php;#默认文件
root/home/www/itblood.com;#网站根目录
includelocation.conf;#调用其他规则,也可去除
error_page404/404.html;
}
四种规则方法,就可以自己独立解决nginx多域名配置问题了。
配置多域名
方法一:多个的.conf方法(优点是灵活,缺点就是站点比较多配置起来麻烦)
这里以配置2个站点(2个域名)为例,n个站点可以相应增加调整,假设:
ip地址:192.168.1.100
域名1example1.com放在/www/example1
域名2example2.com放在/www/example2
配置nginx虚拟主机的基本思路和步骤如下:
把2个站点example1.com,example2.com放到nginx可以访问的目录/www/
给每个站点分别创建一个nginx配置文件example1.com.conf,example2.com.conf,并把配置文件放到/usr/local/nginx/vhosts/
然后在/usr/local/nginx/nginx.conf里面加一句包括进步2创建的配置文件全部包含进来(用*号)
重启nginx
1,打开/usr/local/nginx/nginix.conf文件,在相应位置加入包括把以上2个文件包含进来
用户wwwwww;
worker_processes1;
#主服务器错误日志
error_log/usr/local/nginx/log/nginx/error.log;
pid/usr/local/nginx/nginx.pid;
事件{
worker_connections51200;
}
#主服务器配置
http{
包括mime.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”’;
发送文件;
#tcp_nopushon;
#keepalive_timeout0;
keepalive_timeout65;
gzip上
服务器{
听80
服务器名称_;
access_log/usr/local/nginx/log/nginx/access.logmain;
server_name_in_redirect关闭
位置/{
root/usr/share/nginx/html;
indexindex.html;
}
}
#包含所有的虚拟主机的配置文件
包括/usr/local/nginx/vhosts/*;
}
2,在/usr/local/nginx下创建vhosts目录
mkdir/usr/local/nginx/vhosts
3,在/usr/local/nginx/vhosts/里创建一个名字为example1.com.conf的文件,把以下内容拷进去
服务器{
听80
server_nameexample1.comwww。example1.com;
access_log/www/access_example1.logmain;
位置/{
root/www/example1.com;
indexindex.phpindex.htmlindex.htm;
}
error_page500502503504/50x.html;
location=/50x.html{
root/usr/share/nginx/html;
}
#将php脚本传递给fastcgi服务器,侦听127.0.0.1:9000
位置〜.php${
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_paramscript_filename/www/example1.com/$fastcgi_script_name;
包括fastcgi_params;
}
位置〜/.ht{
拒绝所有
}
}
4,在/usr/local/nginx/vhosts/里创建一个名字为example2.com.conf的文件,把以下内容拷进去
服务器{
听80
server_nameexample2.comwww。example2.com;
access_log/www/access_example1.logmain;
位置/{
root/www/example2.com;
indexindex.phpindex.htmlindex.htm;
}
error_page500502503504/50x.html;
location=/50x.html{
root/usr/share/nginx/html;
}
#将php脚本传递给fastcgi服务器,侦听127.0.0.1:9000
位置〜.php${
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_paramscript_filename/www/example2.com/$fastcgi_script_name;
包括fastcgi_params;
}
位置〜/.ht{
拒绝所有
}
}
5,重启nginx
/etc/init.d/nginx重启
方法二:
动态目录方法(优点是方便,每个域名对应一个文件夹,缺点是不灵活)
这个简单的方法比起为每一个域名建立一个vhost.conf配置文件来讲,只需要在现有的配置文件中增加如下内容:
#
根据需求改变这个端口
听80;#could也可以是1.2.3.4:80也可以是1.2.3.4:80的形式
#多个主机名由空格分隔。更换这些。
#多个主机名可以用空格隔开,当然这个信息也是需要按照你的需求而改变的
。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;
}
#直接提供静态文件
#直接支持静态文件(从配置上看不是直接支持啊)
位置〜*^。+。(jpg|jpeg|gif|css|png|js|ico|html)${
access_logoff;
到期30d;
}
位置〜.php${
#一定要使用不同的服务器为fcgi进程,如果你需要
#如果需要,你可以为不同的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;
}
位置〜/.ht{
denyall;
}
最后附另外一个二级域名匹配的方法
绑定域名
server_name*.abcd.com;
获取
主机名if($host〜*(。*)。(。*)。(。*))
{
set$domain$1;
}
定义目录
roothtml/abc/$domain/;
location/
{
roothtml/abcd/$domain;
indexindex.htmlindex.php;