nginx的虛擬主機就是通過nginx.conf中server節點指定的,想要設置多個虛擬主機,配置多個server節點即可 先看一個最簡單的虛擬主機配置示例 虛擬主機名可以有4種格式: (1)準確的名字,例如此例中的a.test.com (2)\ 號開頭的,例如 \ .test.com (3)\ ...
nginx的虛擬主機就是通過nginx.conf中server節點指定的,想要設置多個虛擬主機,配置多個server節點即可
先看一個最簡單的虛擬主機配置示例
server {
listen 80; #監聽的是80埠
server_name www.wl.com; #指定這個虛擬主機名為www.wl.com,當用戶訪問www.wl.com時,就有這個虛機主機進行處理
location / { #因為所有請求都是/開頭的,所以這行表示匹配所有請求
index index.html; #指定此虛擬主機的預設首頁為index.html
root /home/www/host_a/; #指定此虛擬主機的物理根目錄為/home/www/host_a/ 即指定 location / 在那個物理目錄
}
}
虛擬主機名可以有4種格式:
(1)準確的名字,例如此例中的a.test.com
(2)*號開頭的,例如 *.test.com
(3)*號結尾的,例如 mail.*
(4)正則表達式形式,例如
server_name ~^www\d+\.test\.com$;
註意,使用正則表達式形式時,必須以'~'開頭
server_name也可以同時指定多個,例如:
server_name test.com www.test.com *.test.com;
這時優先順序為:
(1)確切的名字
(2)最長的以*起始的通配符名字
(3)最長的以*結束的通配符名字
(4)第一個匹配的正則表達式名字
案例
(1)對兩個功能變數名稱配置相應的虛擬主機,指定不同的目錄
a.test.com -> /home/www/a
b.test.com -> /home/www/b
配置:
server {
listen 80;
server_name a.test.com;
autoindex on; #開啟網站目錄文件列表功能,訪問目錄時列出其中的文件列表,預設不開啟
index index.html;
root /home/www/a/;
}
server {
listen 80;
server_name b.test.com;
index index.html;
root /home/www/b/;
location /(self)/ { #禁止對self目錄的訪問
deny all;
}
}
(2)對不同訪問目錄指定不同物理目錄
server {
listen 80;
server_name ~^\d+\.\d+\.\d+\.\d+$; #使用正則格式,這裡表示接受任何ip
index index.html index.htm;
root /home/lg/www/;
location /share {
root /home/lg/Downloads;
}
location ^~ /Videos {
root /home/lg/;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
allow all;
}
location ^~ /html5 {
root /home/lg/workspace/nodejs/;
index index.html index.htm;
}
location = /404.html {
root /usr/share/nginx/html;
}
}
Nginx預設是不允許列出整個目錄的。如需此功能:
autoindex_exact_size
#預設為on,顯示出文件的確切大小,單位是bytes
#改為off後,顯示出文件的大概大小,單位是kB或者MB或者GB
autoindex_localtime
#預設為off,顯示的文件時間為GMT時間。
#改為on後,顯示的文件時間為文件的伺服器時間
allow all;
#允許所以訪問
如:
location /images {
root /var/www/nginx-default/ibugaocn;
autoindex on;
}