Nginx 使用多个.conf文件配置多个虚拟主机server的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 使用多个.conf文件配置多个虚拟主机server的方法相关的知识,希望对你有一定的参考价值。

参考技术A 一般nginx的配置都默认在 /usr/local/etc/nginx/nginx.conf 里,但是如果我们有多个虚拟主机需要配置的话,全部写在 nginx.conf 下会很臃肿,因此呢, Nginx 提供 include 包含其他配置文件的方式帮助我们解决这个问题,接下来我们就来看看具体怎么配置

安装好 Nginx 后,其默认配置文件不需要更改,它已经帮我们导入了其他配置文件的目录,如上图,最后一句 include servers/*; ,意思就是该配置文件包含 nginx.conf 的同级目录下的 servers 文件夹下所有的文件,这时候我们只需要在 nginx.conf 的同级目录下创建一个 servers 的文件夹,然后创建自己的 .conf 文件就行,当然,如果你的配置文件是其他目录,就修改 include 后的路径就可以

xxx.conf 中的只需要写 server 块就行,其实就相当于把这个 server 块添加到 nginx.conf 中的 http 块中

重启 nginx
sudo nginx -s reload

nginx常用功能配置

一、规范优化nginx配置文件

nginx的主配置文件为nginx.conf,主配置文件包含的所有虚拟主机的子配置文件会统一放入extra目录中,虚拟主机的配置文件按照网站的域名或功能取名,例如www.conf、bbs.conf、blog.conf等。当然,如果虚拟主机的数量不是很多,也可以把多个虚拟主机配置成一个单独的配置文件,仅仅和nginx的主配置文件 nginx.conf分离开即可。

这里使用的参数是include,下面先看看它的语法:

include file | mask

 它可以放置在nginx配置中的任何位置。用法示例如下:

include mime.types;
include www.conf;        #包含单个文件;
include vhosts/*.conf    包含vhosts下所有以conf结尾的文件;

 下面是nginx配置的实战方案,具体如下:

#以基于域名的虚拟主机为例:

[[email protected] conf]# mkdir extra
[[email protected] conf]# egrep -v "#|^$" nginx.conf.default >nginx.conf        #过滤包含#号和空行,生成新文件nginx.conf

查看新生成的nginx配置文件
[[email protected] conf]# cat -n nginx.conf    
     1	worker_processes  1;
     2	events {
     3	    worker_connections  1024;
     4	}
     5	http {
     6	    include       mime.types;
     7	    default_type  application/octet-stream;
     8	    sendfile        on;
     9	    keepalive_timeout  65;
    10	    server {
    11	        listen       80;
    12	        server_name  localhost;
    13	        location / {
    14	            root   html;
    15	            index  index.html index.htm;
    16	        }
    17	        error_page   500 502 503 504  /50x.html;
    18	        location = /50x.html {
    19	            root   html;
    20	        }
    21	    }
    22	}

#把10-21行的虚拟主机配置内容分别写到extra/dmtest1.conf,extra/dmtest2.conf和extra/dmtest3.conf文件中,并做修改
[[email protected] conf]# sed -n ‘10,21p‘ nginx.conf >extra/dmtest1.conf
[[email protected] conf]# sed -n ‘10,21p‘ nginx.conf >extra/dmtest2.conf
[[email protected] conf]# sed -n ‘10,21p‘ nginx.conf >extra/dmtest3.conf

[[email protected] conf]# cat extra/dmtest1.conf
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html/dmtest1;        #站点目录修改为html/dmtest1;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

[[email protected] conf]# cat extra/dmtest2.conf
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html/dmtest2;      #站点目录修改为html/dmtest2;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

[[email protected] conf]# cat extra/dmtest3.conf
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html/dmtest3;       #站点目录修改为html/dmtest1; 
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

以上是关于Nginx 使用多个.conf文件配置多个虚拟主机server的方法的主要内容,如果未能解决你的问题,请参考以下文章

nginx基础配置(多个虚拟主机)

nginx修改端口号

nginx配置多个虚拟主机(mac)

nginx虚拟主机配置

nginx配置多个虚拟主机vhost

Nginx虚拟主机(Virtual Host)配置