alias
server { listen 80; server_name www.xxxpc.net ~^www\.site\d+\.net$; error_page 500 502 503 504 404 /50x.html; location /about { alias /data/nginx/pc/html; index index.html; } location /host.pass { deny all; } } 當訪問www.xxxpc.net/about的時候,會直接跳轉訪問/data/nginx/pc/html/index.html這個資源
location的詳細使用
uri:資源定位;當訪問http://www.xxxpc.net/about/index.html時,uri為/about/index.html url:url是包含協議的;http://www.xxxpc.net/about/index.html這整個就是一個url = #用於標准uri前,需要請求字串與uri精確匹配,如果匹配成功就停止向下匹配並立即處理請求。 ~ #用於標准uri前,表示包含正則表達式並且區分大小寫 !~ #用於標准uri前,表示包含正則表達式並且區分大小寫不匹配 ~* #用於標准uri前,表示包含正則表達式並且不區分大寫 !~* #用於標准uri前,表示包含正則表達式並且不區分大小寫不匹配 ^~ #用於標准uri前,表示包含正則表達式並且匹配以什么開頭 $ #用於標准uri前,表示包含正則表達式並且匹配以什么結尾 \ #用於標准uri前,表示包含正則表達式並且轉義字符。可以轉. * ?等 * #用於標准uri前,表示包含正則表達式並且代表任意長度的任意字符
"=" 精確匹配的應用
server { listen 80; server_name www.xxxpc.net ~^www\.site\d+\.net$; location = / { root /data/nginx/pc/html; index index.html; } } 一般都在根下做一個完全匹配,如果匹配的是根就不向下搜索了
"~" 匹配區分大小寫的應用
location ~ /A.?\.jpg{ root /data/nginx/pc/images; index index.html; } 區分大小寫,前面A必須是大寫A,后面的.?匹配單個字符可以是隨機,后面的jpg必須是小寫的jpg
"~*" 匹配不區分大小寫的應用
location ~* /A.?\.jpg{ root /data/nginx/pc/images; index index.html; } 不區分大小寫,前面的A可以是大寫也可以是小寫,后面的jpg可以是小寫也可以是大寫
文件名后綴匹配應用
location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js)$ { root /data/nginx/pc/images; index index.html; } 不區分大小寫,並且訪問上面指定的后綴名的資源都到指定的根路徑中去尋找
匹配的優先級
location優先級:(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ~,~* 正則順序) > (location 部分起始路徑) > (/) 其中location完整路徑指的是: location /images { root /data/nginx/pc; #在/data/nginx/pc下有images目錄,則就是完整路徑 idnex index.html; }
實現訪問控制
location /images { root /data/nginx/pc; index index.html; allow 192.168.38.1; deny 192.168.38.0/24(deny all;); } 執行順序是從上往下,先執行allow允許一部分人訪問指定資源,然后deny拒絕一些人訪問
Nginx賬戶認證功能
[root@app conf.d]# yum install httpd-tools -y #安裝工具,生成認證文件 [root@app conf.d]# htpasswd -bc /apps/nginx/conf/.htpasswd user1 123456 #-b是使用命令行的密碼,不適用默認;-c創建文件;默認是md5加密 [root@app conf.d]# htpasswd -b /apps/nginx/conf/.htpasswd user2 123456 #第二次不需要加-c,如果第二次添加-c,則會把生成的文件覆蓋 location /login { root /data/nginx/pc/html; index index.html; auth_basic "input password"; #提示信息 auth_basic_user_file /apps/nginx/conf/.htpasswd; #指定賬戶認證文件的路徑 } 經過賬戶認證登錄后,才可以看到/data/nginx/pc/html/login/下面的默認站點主頁面;一般用於內部人員調試或者查詢時使用
自定義錯誤頁面
server { listen 80; server_name www.xxxpc.net ~^www\.site\d+\.net$; error_page 500 502 503 504 404 /error.html; #當Nginx捕獲到這些狀態碼時,會調用error.html所定義的錯誤頁面 location = /error.html { #定義錯誤頁面的指定位置 root /data/nginx/pc/html; } } 可以每個域名定義一個錯誤頁面
自定義訪問日志和錯誤日志
server { listen 80; server_name www.xxxpc.net ~^www\.site\d+\.net$; access_log /var/log/nginx/www.xxxpc.net-access.log main; #指定生成日志的路徑和訪問日志名字,並且指定訪問日志的格式 error_log /var/log/nginx/www.xxxpc.net-error.log; #指定錯誤日志的日志名和路徑 location /login { root /data/nginx/pc/html; index index.html; access_log /var/log/nginx/www.xxxpc.net-login_access.log main; error_log /var/log/nginx/www.xxxpc.net-login_error.log; #自定義訪問日志和錯誤日志可以設置到某個location中 } } 每個域名可以單獨定義訪問和錯誤日志;server中有自定義的日志,則以server為准;如果server中沒有,則以http中的日志格式為准