Nginx的虛擬主機配置,Nginx的rewrite

Nginx的虛擬主機的配置

虛擬主機:當一個機器上要跑多個站點,即多個域名的時候,這就需要虛擬主機來定義

配置虛擬主機,先將主配置文件下的server註釋掉,添加一個include vhost/*.conf

在這裏插入圖片描述

再在conf目錄下創建一個vhost目錄
我有兩個站點:www.1.com ,www.2.com

編寫兩個虛擬主機配置文件:

[root@shuai-01 vhost]# vim www.1.com.conf

server {
    listen 80;
    server_name www.1.com;
    root /data/wwwroot/www.1.com;
}

[root@shuai-01 vhost]# vim www.2.com.conf

server {
    listen 80;
    server_name www.2.com;
    root /data/wwwroot/www.2.com;
}   

兩個的網站目錄:

[root@shuai-01 vhost]# mkdir /data/wwwroot/www.1.com/
[root@shuai-01 vhost]# mkdir /data/wwwroot/www.2.com/

[root@shuai-01 vhost]# echo "www.1.com" > /data/wwwroot/www.1.com/index.html
[root@shuai-01 vhost]# echo "www.2.com" > /data/wwwroot/www.2.com/index.html

訪問測試:

[root@shuai-01 vhost]# curl -x127.0.0.1:80 www.1.com

www.1.com
[root@shuai-01 vhost]# curl -x127.0.0.1:80 www.2.com
www.2.com

設置一個默認虛擬主機,將所有訪問錯誤的域名都給deny掉,不讓訪問:

沒設置前:
[root@shuai-01 vhost]# curl -x127.0.0.1:80 www.3.com
www.1.com
設置:
[root@shuai-01 vhost]# vim default.conf

server {
    listen 80 default_server;
    deny all;
}

設置後:
[root@shuai-01 vhost]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@shuai-01 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@shuai-01 vhost]# curl -x127.0.0.1:80 www.3.com
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.14.0</center>
</body>
</html>

Nginx默認虛擬主機
不管什麼域名解析到該服務器,都會訪問到默認虛擬主機
nginx.conf中第一個server { }
或 listen 80 default_server;
泛解析 *.aming.com
Nginx虛擬主機配置規範
主配置文件include虛擬主機配置文件
在conf目錄下創建vhost目錄,在vhosts目錄下面定義虛擬主機配置
Nginx基於端口的虛擬主機
listen端口不同,server_name可以相同

nginx的rewrite

域名跳轉(重定向)、URL重寫(僞靜態)、動靜分離(跳轉域名,並接入CDN實現加速)
依賴PCRE庫
模塊:ngx_http_rewrite_module

Rwrite相關指令:

  • if (條件) { command }
    格式:if (條件判斷) { 具體的rewrite規則 }
    條件判斷類容由內置變量邏輯判斷符號目標字符串組成
    內置變量是Nginx提供的。如:$request_method(請求方法),$request_uri(uri)
    邏輯判斷符號:=(等於),!=(不等於), ~(匹配),~*(不區分大小寫匹配),!~(不匹配),!~*(不區分大小寫的不匹配)

    具體if指令格式詳解

  • break和last
    nginx的location匹配是從上到下一直匹配完的,匹配到了還要繼續執行下面的。break和last都有跳出匹配,break跳出是不執行下面的location,last跳出本location,還繼續執行下面的location
    break和last詳解

  • return 後面跟狀態碼、URL、text(支持變量)
    直接寫狀態碼,狀態碼(301,302)後面跟URL,狀態碼後面跟變量(字符串或json)
    return指令詳解

  • rewrite規則
    該指令一般用於對請求的客戶端直接返回響應狀態碼。在該作用域內return後面的所有nginx配置都是無效的。
    可以使用在server、location以及if配置中。
    除了支持跟狀態碼,還可以跟字符串或者url鏈接。
    rewrite規則詳解

rewrite_log定義rewrite日誌 rewrite_log on; 寫到error_log notice級別

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