Windows下配置Nginx本地映射多域名访问多

引言

最近在玩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,如果想看nginx如何配置php,并解决tp框架在nginx中的路径访问502问题,看我的另一篇博文:Nginx+php-fpm+php环境下部署ThinkPHP3.2.3发生502错误

发布了65 篇原创文章 · 获赞 58 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/AngelLover2017/article/details/82915241