虚拟主机

  • 每一个server{}块就是一个虚拟主机

  • 一个Nginx可以有多个虚拟主机

  • 虚拟主机可以写在nginx.conf文件中,也可以写在独立的配置文件目录中,通过include指令引入。在生产环境中一般倾向后者,因为可以避免将所有配置都写在一个文件中,造成混乱。

简易配置并测试

  1. 自定义虚拟主机配置文件:

    $ vim /usr/local/nginx/conf/vhosts/lwz.com.conf
    
    server
        {
            listen 80;
            server_name lwz1.com;
            root /data/www/lwz;
            index index.html index.htm;
        }
    
    $ nginx -s reload
    
  2. 创建测试文件

    $ mkdir -p /data/www/lwz
    $ echo "lwz.com test!" > /data/www/lwz/index.html
    
  3. 本地hosts解析

    $ vim /etc/hosts
    127.0.0.1 lwz1.com
    
  4. 测试

    $ curl lwz1.com
    lwz.com test!
    

配置默认虚拟主机

只要是nginx中没有定义的域名解析进来,都会被指向到默认虚拟主机中。如果没有定义默认虚拟主机,那么配置文件里的第一个server{}块就是默认虚拟主机。
可通过nginx -T查看第一个server{}块。

将lwz.com设置为默认虚拟主机:

server
        {
            listen 80 default_server;   # 加上default_server,就是默认虚拟主机了
            server_name lwz1.com;
            root /data/www/lwz;
            index index.html index.htm;

            deny    all;    # 增加安全性,禁止所有人访问。
        }

连接php的虚拟主机

监听9000端口:

server {
        listen       80;
        server_name  lwz.123.com;

        root   /data/wwwroot/blog.123.com;
        index  index.html index.php;

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
   }

监听sock文件:

server {
        listen       80;
        server_name  lwz.123.com;

        root   /data/wwwroot/blog.123.com;
        index  index.html index.php;

        location ~ \.php$ {
            fastcgi_pass   unix:/tmp/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
   }

如果不确定php用的什么监听方式,可以查看php-fpm.conf文件或者php-fpm.d目录下的文件中的listen参数查看。

创建测试文件index.php

<?php
echo "hello world";
?>

hosts文件增加本地解析

sudo vim /etc/hosts
127.0.0.1 lwz.123.com