1. 程式人生 > >Windows下配置Nginx本地對映多域名訪問多

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;
        ...
        }