首先談一點自己的理解
所謂虛擬機器主機,是說通過幾個不同的url地址,都能到達nginx環境,只不過針對不同的url,處理的邏輯不同。 nginx支援虛擬機器主機,但是瀏覽器等用戶端不知道,所以虛擬機器主機的幾個地址,應該是都指向nginx所在的ip地址,虛擬機器主機功能才能正常。
下面來說一下nginx環境下虛擬機器主機的配置
假設我們需要配置的虛擬機器主機網域名稱為mail.zjc.com
虛擬機器主機存放目錄為/var/www/mail.zjc.com/web
sudo mkdir -p /var/www/mail.zjc.com/web
建立nginx虛擬機器主機設定檔
sudo gedit /etc/nginx/sites-available/mail.zjc.com.vhost
內容為(其中php域根據本機php應用情況配置)
server { listen80; server_name mail.zjc.com; root /var/www/mail.zjc.com/web; if ($http_host != "mail.zjc.com") { rewrite ^http://mail.zjc.com$request_uripermanent; } index index.php index.html; location = /favicon.ico { log_not_foundoff; access_logoff; } location = /robots.txt { allow all; log_not_foundoff; access_logoff; } # Make sure files with the following extensions do not get loaded by nginx because nginx would display the source code, and these files can contain PASSWORDS!location~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ { deny all; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).location~ /\. { deny all; access_logoff; log_not_foundoff; } location~* \.(jpg|jpeg|png|gif|css|js|ico)$ { expires max; log_not_foundoff; } location~ \.php$ { try_files$uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_passunix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
因為nginx的主設定檔nginx.conf會自動應用sites-enabled中的設定檔,所以我們需要在sites-enabled中建立一個mail.zjc.com.vhost檔案的連結
cd /etc/nginx/sites-enabledsudo ln -s /etc/nginx/sites-available/mail.zjc.com.vhost www.zjc.com.vhost
重新載入nginx使配置生效
sudo /etc/init.d/nginx reload
好了,接下來在/var/www/mail.zjc.com/web目錄下建立一些檔案(例如index.php)就可以通過http://mail.zjc.com/index.php來訪問了。BTW,記得在hosts中或者DNS上設定mail.zjc.com指向nginx所在的IP地址。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
以上就介紹了nginx配置虛擬機器主機vhost,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。