Nginx虛擬主機配置

    在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段中。

    9a36278fe0636009.png

    由於是測試使用所以打開瀏覽器可能也不會訪問到,這時可以修改本機的hosts文件添加如下內容:

     IP(web server 的服務器ip地址)    hostname(就是我們定義的server_name)

   140779a98e717833.png

   全部設置完成後就可以重啓nginx服務器了,如果沒有添加服務啓動腳本的話可以使用nginx -s quit && nginx啓動(如果沒有將nginx的sbin目錄加入到環境變量中就需要使用絕對路徑來啓動它/usr/local/nginx/sbin/nginx -s quit && /usr/local/nginx/sbin/nginx)

    查看下訪問結果

    8b6ce7e573f1f8b2.png

    接下來爲此虛擬主機開啓狀態監控功能,在虛擬主機的配置文件中加入一下內容

        location /status{

        stub_status     on;                    #啓動狀態功能

        access_log      off;                   #關閉訪問日誌

        }

    使用nginx -t 來檢查配置文件是否正常,如果出現一下內容表示配置文件正常,可以重啓nginx服務

fb78d27d4ee66ad1.png

    然後在瀏覽器中輸入www.test.com/status 查看狀態頁面是否顯示

c282116729fdca87.png

    活躍連接數2個,接受5個請求    處理5個請求    響應64個(我一直在刷新。。)    讀0個    寫1個    等待1個

    一般這些狀態頁面是不允許未經授權的用戶訪問的,所以我們需要設置一下用戶認證,在虛擬主機的狀態頁面中添加如下內容:

        auth_basic "admin";

        auth_basic_user_file /web/vhost/test1/.passwd;

bacaf16a69b45f9b.png

    接下來在/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

    此文件的格式爲:

用戶名:密碼

88787eae7ea1fa8d.png

    使用nginx -t檢查下,如果配置文件沒問題那就重讀下配置文件 nginx -s reload 然後打開瀏覽器嘗試訪問

547af1688a61d081.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章