Apache 可以通过配置sites-enabled配置虚拟主机,同样,nginx也支持该配置方法.
先来了解一下nginx的配置文件.
通常,nginx配置文件在/etc/nginx目录下有一个nginx.conf,这就是nginx的配置文件了,打开该配置文件,有时候会看到 这样的语句
include /etc/nginx/conf.d/*.conf;
也就是说 /etc/nginx/conf.d/下的conf文件也是nginx配置文件.
下面就来看怎样使用nginx配置多个域名多个站的虚拟主机
首先, 先把nginx.conf备份,可以进入/etc/nginx在linux命令行输入
cp nginx.conf nginx.conf.bak
然后创建两个文件夹sites-available和sites-enabled
mkdir sites-available sites-enabled
再把conf.d下的配置文件,比如default.conf 拷贝到sites-available下,分别重命名为site1.example1.com和site2.example2.com
cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/site1.example1.com; cp conf.d/default.conf /etc/nginx/sites-available/site2.example2.com
然后,打开site1.example1.com并编辑,对site2.example2.com做同样操作:
- 在server代码块中,将server_name改为站点1的域名site1.example1.com,
server {
listen 80;
server_name site1.example1.com;
- 在server代码块的location代码块中,将root改为服务器将要放置site1的目录
location / {
root /usr/share/nginx/html/site1/;
index index.html index.htm index.php;
}
- 如果配置支持php,则php的root也需要改为服务器将要放置site1的目录
location ~ \.php$ {
root /usr/share/nginx/html/site1/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
保存并退出,相应对site2.example2.com做类似操作
接着,为两个配置文件创建link
ln -sf /etc/nginx/sites-available/* /etc/nginx/sites-enabled
可以看一下是否成功
ls -l
然后,打开并修改/etc/nginx下的nginx.conf
找到语句include /etc/nginx/conf.d/*.conf;添加注释,并且再新增一行
# include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
保存并退出后,重启nginx服务,在命令行输入
service nginx restart
最后,别忘了将两个域名解析至服务器,为了测试配置是否成功,可以在
/usr/share/nginx/html/site1/ /usr/share/nginx/html/site2/ 两个目录下分别新建不同内容的网页,看访问两个域名的时候是否可以访问到新建的文件.