windows 下 nginx 配置虚拟主机

时间:2021-07-29 16:07:09

1. 在 nginx 的配置文件 nginx.conf 里面 引入虚拟主机配置文件,以后所有的虚拟主机配置文件都在写这个文件里

  include       vhost.conf;

  (或者新建vhost目录,每个虚拟主机用一个配置文件,这样就得这样引入配置文件 include     vhost/*.conf)

2. 在 conf 目录下面新建 vhost.conf 文件

  

server {
listen 80;
server_name youyi.localhost.com; location / {
root E:/svn/youyi/youyi;
index index.php index.html index.htm;
} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php(.*)$ {
root E:/svn/youyi/youyi;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}

  listen 监听 80 端口

  server_name 虚拟主机域名

  location 下的root 配置虚拟主机访问的路径,index 配置默认访问首页

  以上是设置能运行php的基础配置

  现在运行youyi.localhost.com/index.php 能正常访问,但是这样配置还不能满足我们的需求,比如,如果我们访问youyi.localhost.com/index.php/admin/ nginx 就会返回错误。因为 nginx 不支持 PATH_INFO的访问方式,那怎么办呢,我们用一下方式解决

  将location .php 配置改成这样:

  

    location ~ \.php(.*)$ {
root E:/svn/youyi/youyi;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root/$fastcgi_path_info;
include fastcgi_params;
}

  这样就能支持pathinfo 路径访问了

参考文献:http://www.nginx.cn/426.html

(注:该文献里面的fastcgi_split_path_info 配置是这样的 ^((?U).+.php)(/?.+)$ ,但是作者在使用过程中遇到一个问题:youyi.localhost.com/a/b/c.php 这样的路径返回 403 Access denied ,经过查找资料改成以上写法就可以了)