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

小编在这里有个习惯,对虚拟主机进行配置时内容写进另外一个文件,然后通过include指令包含进来,这样更便于维护和管理。

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

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

创建虚拟主机

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

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 目录下

nginxhosts 文件路径在 /etc 目录下

示例:
在host文件下添加上 127.0.0.1 test.com 这里的 127.0.0.1是指访问本地ip, 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的介绍博客