# 虚拟主机 - 每一个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 ``` ``` hosts文件增加本地解析 ``` sudo vim /etc/hosts 127.0.0.1 lwz.123.com ```