Windows下配置Nginx本地對映多域名訪問多
阿新 • • 發佈:2018-12-12
引言
最近在玩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;
...
}