官方文檔地址:http://nginx.org/en/docs/beginners_guide.html#static
nginx最常用的一個功能是作為代理服務器。代理服務器接受請求並把請求傳遞給被代理的多個服務器,獲取被代理服務器的相應然后發送給用戶。下面將配置一個最基本的代理服務器,響應圖片文件請求,並把所有的其他請求轉發給被代理服務器服務器。兩個服務器都將被定義為一個單獨的nginx實例。
- 首先,通過增加server塊,定義被代理服務器。如下面配置:
service { listen 8080; root /pathto/data/upl; location / { } }
這樣配置一個簡單的服務器,監聽8080端口(前提是這個端口還沒有被listen指令指定監聽過),並把所有請求映射到本地文件系統的/pathto/data/upl路徑。創建這個文件路徑並且放入index.html文件。注意,root指令需要放在server環境下。在對沒有自己root指令的請求進行響應,且location塊被選中時,location下的root指令才會被使用。
- 使用已經配置好的(http://www.cnblogs.com/Lissssssssss/p/8846719.html)服務,修改將其代理到上面的服務器中:在第一個location塊中,添加proxy_pass指令后接協議,服務名,端口號使其作為代理服務。
server { location / { proxy_pass http://localhost:8080; } location /images/ { root /pathto/data; } }
然后修改第二個location塊。第二個location原先是通過/images/前綴匹配,映射到本地文件系統的/pathto/data/images/路徑下。現在將其修改為通過匹配請求圖片的擴展名,將其映射到本地文件系統下。修改如下:
location ~ \.(gif|jpg|png)$ { root /pathto/data/images; }
參數是一個正則表達式,匹配所有的以.gif .jpg 或者 .png為結尾的URLs。正則表達式需要~為開頭。對應的請求將會被匹配到/pathto/data/images路徑下。
當nginx選擇一個location去服務一個請求時,它會首先檢查確定的前綴,並且是最長前綴優先,然后才會去匹配正則表達式。如果有匹配的正則表達式,nginx選擇對應的location,否則,它將會選擇之前記住的location。 - 最終的配置如下:
server { location / { proxy_pass http://localhost:8080/; } location ~ \.(gif|jpg|png)$ { root /pathto/data/images; } }
這樣配置的服務,會過濾以.gif .jpg或者.png為結尾的請求,並且將其映射到/pathto/data/images本地文件系統路徑(通過增加root指令的參數到URI上)。然后將其他所有的請求代理到代理服務器上。