引言
最近在玩nginx,因为电脑是windows系统,也不想折腾再装一个centos,所以直接在windows上配置的WNMP
环境,然后想把一起写的放在xampp里面的项目都迁移到新环境下,但是遇到一个问题,就是Nginx如何配置
本地IP映射到多个域名,网上的教程其实很多,都是差不多了,配置起来也很简单,但是windows下的路径问题
真的是个坑,我下面记录一下我遇到的坑
如何配置主机映射
先简单说一下,如何配置hosts文件和nginx.conf文件,使得本地IP映射到多个域名中去
First 你需要配置你的hosts
文件,为127.0.0.1配置多个域名,这个很简单
host文件目录:C:/Windows/System32/drivers/etc/hosts
127.0.0.1 www.paogua.com
127.0.0.1 www.mks.com
127.0.0.1 www.libSys.com
[tip]:hosts文件无需重启电脑生效
Second 你需要配置你的nginx.conf
文件,这里有两种组织方式
第一种 : 把所有的server都写到nginx.conf一个配置文件中去,这样的话就没有Windows的路径的坑了
第二种: 在nginx.conf同级目录下建一个conf.d文件夹,然后把对于的server写成一个.conf文件,例如
www.paogua.com.conf www.mks.com.conf www.libSys.com.conf
然后在nginx.conf中使用include引入文件即可,但这样会遇到路径的坑,下面说
我这里说第二种方式,两种方式区别不大,只是第二种 易维护
1、 在conf.d中新建你的server配置,例如www.paogua.com
,在nginx.conf中引入
http{
include mime.types;
default_type application/octet-stream;
...
#gzip on;
include conf.d/*.conf; [写到这里就可以了]
server{
...
}
}
[tip]:这里说一个include时的路径的坑,在linux中配置nginx.conf我们看到网上和官方给出的路径配置都是类似 /etc/nginx/conf.d/*.conf;
这样的绝对路径,是相对于根目录的,但是windows中配置绝对路径是不行的,原因我贴出我的log-error信息,一看就明白了
2018/10/01 00:54:42 [emerg] 5476#11312: CreateFile() "D:\Nginx+PHP+Mysql\nginx/conf/
\conf\conf.d\www.paogua.com.conf" failed (3: The system cannot find the path specified) in
D:\Nginx+PHP+Mysql\nginx/conf/nginx.conf:34
看到问题了吗?Windows中路径的分隔符是\
,但是linux中路径的分隔符是/
,我猜测nginx默认支持的路径就是/
,所以引入windows下的绝对路径,nginx就找不到配置文件了,你会发现此时你的nginx也是启动不了的,所以换成相对路径,并改路径分隔符为/
,就没问题了
2、接着说www.paogua.com.conf的配置,如何操作
其实配置很简单,把server_name
改为配置的域名就可以
server {
listen 80;
server_name www.paogua.com;
...
}
我这里的环境是WNMP,用的php框架是tp