Nginx 虛擬目錄和虛擬主機的配置
nginx.conf 配置文件的幾個常用命令
nginx 配置文件主要分為六個區域:
-
main
: 全局設置 -
events
: nginx工作模式 -
http
: http設置 -
sever
: 主機設置 -
location
: URL 匹配 -
upstream
: 負載均衡服務器設置
下面,就以在 Windows 上使用 phpStudy 集成開發環境舉例說明下 Nginx 的虛擬目錄和虛擬主機是如何配置的:
Nginx 虛擬目錄配置
通俗地講,虛擬目錄的意思就是瀏覽器上輸入的 URL 不一定就代表網站在文件系統中的絕對路徑,而是可以在硬盤中的任意指定位置。
比如在瀏覽器上訪問的是 http://localhost/test
找到並打開 nginx.conf,然後在 location ~ //.ht {...}
字樣下面添加即可:
1 2 3 4 5 | location /test { alias "C:/Users/cjli/PhpstormProjects/test"; index index.php; autoindex on; } |
這裏 /test
中的 test 是一個別名( alias ),可以自定義,而 alias
指令後面跟的路徑也可以隨意指向文件系統中任何存在的目錄。
重啟 Nginx 後打開 http://localhost/test 就可以看到上面目錄 C:/Users/cjli/PhpstormProjects/test 下的網站了( 如果有的話 )。
註意
-
虛擬目錄路徑的配置不能用
root
指令而必須用alias
指令。 -
路徑必須用雙引號括起來。
-
index
指令和autoindex
指令必須同時出現。
Nginx 虛擬主機配置
通俗地講,虛擬主機的意思就是,功能上力求和一臺物理機實現得一致。
因此就很容易解釋為什麽多個虛擬主機中可以監聽同一個端口號這樣的問題了,因為雖然端口號是相同的,但是可以理解為是不同個主機上的同一個端口,這當然不影響了。
為了管理方便,對 Nginx 的配置文件都可以放在一個文件夾下,然後統一在主配置文件 nginx.conf 中使用 include
指令包含進來。可參考如下:
- conf.d/virtual-hosts.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | server { listen 80; server_name localhost 192.168.1.174 zh.oc.com; charset utf-8; location / { root "D:\WWW\mycncart"; index index.php index.html index.htm; autoindex on; } location ~ \.php(.*)$ { root "D:\WWW\mycncart"; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } } |
- nginx.conf
1 2 | # ... include conf.d/virtual-hosts.conf |
說明
-
每個虛擬主機在 nginx.conf 中都是一個單獨的 server{} 塊,配置思路也大體相同。
-
虛擬主機的端口可以監聽同一個端口。
-
server_name
可以是內網IP、域名,公網 IP 和域名,也可以一次性指向多個域名或 IP。 -
root
指令放在location
指令在之外類似於全局變量,而每個location
塊中都可以使用該指令設置的路徑。
在於 PHP 關聯的時候,要麽全局中指定過 root
,否則在 location
中也必須指定根路徑,否則重啟 Nginx 後也無法找到文件,出現 404 或無法加載網頁。
Nginx 虛擬目錄和虛擬主機的配置