Nginx 配置虚拟主机(多个域名多个站)

《Nginx 配置虚拟主机(多个域名多个站)》 图片发自简书App

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做同样操作:

  1. 在server代码块中,将server_name改为站点1的域名site1.example1.com,
server {
    listen       80;
    server_name  site1.example1.com;
  1. 在server代码块的location代码块中,将root改为服务器将要放置site1的目录
location / {
        root   /usr/share/nginx/html/site1/;
        index  index.html index.htm index.php;
    }
  1. 如果配置支持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/ 两个目录下分别新建不同内容的网页,看访问两个域名的时候是否可以访问到新建的文件.

    原文作者:孙文研
    原文地址: https://www.jianshu.com/p/efab29b6c3b0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞