在nginx中虛擬主機配置有多種方法:可以直接在主配置文件(nginx.conf)中增加,也可以將所有的虛擬主機單獨寫一個文件然後在主配置段中包含進去(include 文件名),最後一種方法是每個虛擬主機都爲一個單獨的配置文件。本篇以第三種方法來做演示
首先確保nginx已經安裝完成接下來創建虛擬主機的配置文件及虛擬主機文件所在的目錄(我的安裝路徑在/usr/local/nginx)
cd /usr/local/nginx/conf #切換到配置文件目錄 mkdir vhosts #創建虛擬主機配置文件所在的目錄 touch vhosts/vhost1.conf #創建第一個虛擬主機的配置文件 |
在此文件中加入如下行:
server { listen 80; # 設置監聽端口; server_name www.test.com; # 設置主機名; location / { # 定義網站跟目錄; root /web/vhost/test1; # 此目錄如果不存在則需創建 index index.html; # 此文件也需要事先創建 } error_page 500 502 503 504 /usr/local/nginx/html/50x.html; # 定義頁面狀態碼爲5XX系列的錯誤頁面 access_log /web/vhost/test1/logs/test1.access.log; # 設置訪問日誌路徑 error_log /web/vhost/test1/logs/logs/test1.error.log crit; # 設置錯誤日誌路徑 } |
如果有關上方的目錄及文件不存在則按照一下方法創建
mkdir /web/vhost/test/logs -p touch /web/vhost/test/index.html 編輯index.html文件隨便添加內容然後保存退出即可 |
這時虛擬主機的配置文件已經搞定,但是重啓nginx服務是不會生效的因爲並沒有包含進去,打開nginx.conf文件將其添加至http{}段的最後一行,一定要在http段中。
由於是測試使用所以打開瀏覽器可能也不會訪問到,這時可以修改本機的hosts文件添加如下內容:
IP(web server 的服務器ip地址) hostname(就是我們定義的server_name)
全部設置完成後就可以重啓nginx服務器了,如果沒有添加服務啓動腳本的話可以使用nginx -s quit && nginx啓動(如果沒有將nginx的sbin目錄加入到環境變量中就需要使用絕對路徑來啓動它/usr/local/nginx/sbin/nginx -s quit && /usr/local/nginx/sbin/nginx)
查看下訪問結果
接下來爲此虛擬主機開啓狀態監控功能,在虛擬主機的配置文件中加入一下內容
location /status{ stub_status on; #啓動狀態功能 access_log off; #關閉訪問日誌 } |
使用nginx -t 來檢查配置文件是否正常,如果出現一下內容表示配置文件正常,可以重啓nginx服務
然後在瀏覽器中輸入www.test.com/status 查看狀態頁面是否顯示
活躍連接數2個,接受5個請求 處理5個請求 響應64個(我一直在刷新。。) 讀0個 寫1個 等待1個
一般這些狀態頁面是不允許未經授權的用戶訪問的,所以我們需要設置一下用戶認證,在虛擬主機的狀態頁面中添加如下內容:
auth_basic "admin"; auth_basic_user_file /web/vhost/test1/.passwd; |
接下來在/web/vhost/test1/目錄下生成.passwd文件生成方法有以下兩種
A.使用htpasswd工具直接生成
htpasswd -c -m /web/vhost/test1/.passwd # htpasswd 爲httpd的工具如果無法使用請安裝yun imstall httpd-tools |
B.使用openssl 加密後手動創建文件並添加
openssl passwd -apr1 -salt `echo $RANDOM` touch /web/vhost/test1/.passwd |
此文件的格式爲:
用戶名:密碼 |
使用nginx -t檢查下,如果配置文件沒問題那就重讀下配置文件 nginx -s reload 然後打開瀏覽器嘗試訪問