location是nginx配置中一個指令,用於訪問URL配置,而在這個location中所配置的每一個指令將啓動不一樣的模塊去完成相應工做。php
默認nginx.conf 中至少有一個location /,即表示客戶端瀏覽器請求的URL爲域名+/,常見方式以下:css
= 字面精確匹配; ^~ 最大前綴匹配; / 不帶任何前綴:最大前綴匹配; ~ 大小寫相關的正則匹配; ~* 大小寫無關的正則匹配; @ location內部重定向的變量。
Location = 精確匹配會被第一個處理,若是發現精確匹配,Nginx則中止搜索其餘任何Location的匹配html
^~爲最大前綴匹配,若是匹配到該規則,Nginx則中止搜索其餘任何location的匹配,不然Nginx會繼續處理其餘location指令linux
Location規則優先級若是:nginx
(location =)>(location 完整路徑)>(location ^~ 路徑)>(location ~|~*) >(location 部分起始路勁)>(location /)
以下爲Nginx Location規則案例web
location = / { [ configuration L1 ] #只會匹配/,優先級比Location /低。 } location = /index.html { [ configuration L2 ] #只會匹配/index.html,優先級最高。 } location / { [ configuration L3 ] #匹配任何請求,由於全部請求都是以"/"開始; #可是更長字符匹配或者正則表達式匹配會優先匹配,優先級最低。 } location = /images/ { [ configuration L4 ] #匹配任何以/images/開始的請求,並中止匹配其它location; } location ~* \.(html|txt|gif|jpg|jpeg)$ { [ configuration L5] # 匹配以html、txt、gif、jpg、jpeg結尾的URL文件請求; # 可是全部/images/目錄的請求將由 [Configuration L4]處理。 } 瀏覽器發起HTTP Request URI案例與Location規則案例匹配以下: / ->匹配configuration L3; /index.html匹配configuration L2; /images/匹配configuration L4; /images/logo.png匹配configuration L4; /img/test.jpg匹配configuration L5。
常見添加以下:正則表達式
location / { root /var/www/html/; expires 60d; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /var/www/html/; expires 60d; } location ~ .*\.(jsp|php|cgi|do)$ { root /var/www/html/; proxy_pass http://linux_web; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location =/newindex.html { root /var/www/newwww/; expires 60d; }