1. 程式人生 > >Nginx 虛擬目錄和虛擬主機的配置

Nginx 虛擬目錄和虛擬主機的配置

conf code get 負載 study blank table 雙引號 無法

nginx.conf 配置文件的幾個常用命令

nginx 配置文件主要分為六個區域:

  • main: 全局設置

  • events: nginx工作模式

  • http: http設置

  • sever: 主機設置

  • location: URL 匹配

  • upstream: 負載均衡服務器設置

下面,就以在 Windows 上使用 phpStudy 集成開發環境舉例說明下 Nginx 的虛擬目錄和虛擬主機是如何配置的:

Nginx 虛擬目錄配置

通俗地講,虛擬目錄的意思就是瀏覽器上輸入的 URL 不一定就代表網站在文件系統中的絕對路徑,而是可以在硬盤中的任意指定位置。

比如在瀏覽器上訪問的是 http://localhost/test

,在網站根目錄 C:/htdocs/ 下不一定就有 test 這個目錄,而是可以在其他位置, 比如 d:/not_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 虛擬目錄和虛擬主機的配置