1.19 nginx的location配置php
安裝第三方模塊echo-nginx-modulehtml
git clone https://github.com/openresty/echo-nginx-module.git ./configure --prefix=/usr/local/nginx --add-module=/path/to/echo-nginx-module
安裝echo模塊操做:linux
cd /usr/local/src/nginx-1.8.0/ ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module make && make install /etc/init.d/nginx restart # nginx -V nginx version: nginx/1.8.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) configure arguments: --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module
配置寫法:nginx
server { listen 80; server_name 2.com; root /data/t-nginx/2.com; location /abc/ { echo 123; } }
效果:訪問/abc/要輸出echo的信息git
curl -x127.0.0.1:80 2.com/abc/1111 123
location語法github
location [=|^~|~|~*] /uri/ { …. }vim
https://coding.net/u/aminglinux/p/nginx/git/blob/master/location/ruler.md bash
location優先級及案例curl
= 高於 ^~ 高於 ~* 等於 ~ 高於 /ide
http://coding.net/u/aminglinux/p/nginx/git/blob/master/location/priority.md
場景比較:/ 與 ~*
server { listen 80; server_name 2.com; root /data/t-nginx/2.com; location /abc/ { echo "/"; } location ~* abc { echo "~*"; } }
效果:
當匹配到 location /abc/的時候,輸出/
當匹配到 location ~* abc的時候,輸出~*
測試訪問:
curl -x127.0.0.1:80 2.com/abc/1111
~*
實驗證實,一樣的場景~*比/的優先級要高。
場景比較:~與~*
當這2個同時存在,會匹配最早出現的location語法。
場景比較:= 與 ^~
vim 2.com.conf server { listen 80; server_name 2.com; root /data/t-nginx/2.com; location ^~ abc { echo "^~"; } location = "/abc/1.php" { echo "="; } } # curl -x127.0.0.1:80 2.com/abc/1.php =
實驗證實,一樣的場景,=比^~的優先級要高。
規則示例
location = "/12.jpg" { ... }
如:
www.aminglinux.com/12.jpg 匹配 www.aminglinux.com/abc/12.jpg 不匹配
不匹配緣由:由於「=」是精準匹配
location ^~ "/abc/" { ... }
如:
www.aminglinux.com/abc/123.html 匹配 www.aminglinux.com/a/abc/123.jpg 不匹配
不匹配緣由:由於是以"/abc/"開頭並匹配
location ~ "png" { ... }
如:
www.aminglinux.com/aaa/bbb/ccc/123.png 匹配 www.aminglinux.com/aaa/png/123.html 匹配
都匹配:~匹配"png"便可
location ~* "png" { ... }
如:
www.aminglinux.com/aaa/bbb/ccc/123.PNG 匹配 www.aminglinux.com/aaa/png/123.html 匹配
都匹配:由於不區分大小寫匹配,因此有"png"都會匹配
location /admin/ { ... }
如:
www.aminglinux.com/admin/aaa/1.php 匹配 www.aminglinux.com/123/admin/1.php 不匹配
不匹配緣由:由於是匹配uri後/admin/的開頭,so第二個不配。