Nginx配置虚拟主机

Posted 2020-05-06updated 2020-05-06Words 677Reading time 4m

建议虚拟主机配置文件路径

建议将对虚拟主机进行配置的内容写进另外一个文件,然后通过include指令包含进来,这样更便于维护和管理。

1
2
3
http {
include /etc/nginx/conf.d/*.conf;
}

在这里,因为小编的nginx是安装在 /etc 目录下的 所以include引入的时候直接放在 nginx/conf.d 目录下,这里的 *.conf 是匹配所有的.conf 文件

创建虚拟主机

在conf.d目录下创建一个以 .conf 结尾的文件,在这里我们命名为项目名称 test.com.conf
切记 在里面 用server{}包裹起来 代码演示如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
server {
charset utf-8;
client_max_body_size 128M;

listen 80; ## listen for ipv4
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6

server_name test.com;
root /mnt/d/www/swoft;
index index.php;

access_log /mnt/d/log/test.com/access.log;
error_log /mnt/d/log/test.com/error.log;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ ^/assets/.*\.php$ {
deny all;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_buffering off;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_connect_timeout 300;
# fastcgi_send_timeout 300;
# fastcgi_read_timeout 300;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
try_files $uri =404;
}

location ~* /\. {
deny all;
}
}

配置内容细解

  • charset 在这里是设置字符串解析为 utf-8
  • client_max_body_size 设置文件上传的最大的容量,在这里小编设置的是128M,需要多大设置多大,但是介意在一定的区间即可。
  • listen 监听端口,在这里小编的监听端口为80端口,如果使用fpm的话,可以实现端口共存
  • service_name 虚拟域名
  • root 项目文件存放路径
  • index 项目入口文件
  • access_log 成功日志存放路径(必须存在此路径和文件,不然nginx会报异常 [找不到文件])
  • error_log 错误日志存放路径(必须存在此路径和文件,不然nginx会报异常 [找不到文件])

在这里基本的配置文件基本介绍完毕,如无其他特殊需求请直接跳转到配置host文件

location路径详解

host文件配置

修改window && nginx 下的 hosts文件。

window下hosts文件路径在 C:\Windows\System32\drivers\etc 目录下

小编nginx下hosts文件路径在 /etc 目录下

127.0.0.1 test.com
这里的 test.com 是虚拟主机的配置,对应配置文件中的 server_name

模型定义

运行虚拟主机

  1. 重载nginx配置: ./nginx -s reload
  2. 查看nginx配置文件是否正确: nginx -t
  3. 重启nginx: sudo service nginx start
  4. 浏览器输入 test.com 检测虚拟主机是否配置成功

在这里,nginx的配置文件已经全部介绍完毕,在这里小编使用fpm(FastCGI 进程管理器)管理项目,如果想了解fpm 可以看小编的关于fpm的介绍博客