http {
upstream rails_app {
server 127.0.0.1:3000; //exactly what WEBrick listens
}
server {
listen *:80;
root /path/to/application/public;
location / {
proxy_paas http://rails_app;
}
}
}
這個配置文件接受80端口的請求,然后轉發給3000端口,你已經把nginx至于WEBrick之前了。
上面的配置還有一點不太合理,location會把所有的請求發送給WEBrick。
我們希望把靜態資源交給nginx處理,其他的資源交給WEBrick處理。
server {
listen *:80;
root /path/to/application/public;
location / {
proxy_pass http://rails_app;
}
location /assets {
}
}
我們用一個新的location塊攔截 /assets前綴
一個小提示,靜態資源的存儲往往有著HTTP緩存的頭部。你可以這樣完成
location /assets {
expires max;
add_header Cache-Control public;
}
expire指令設置了過期和緩存控制。值可以是一個確切的日期,相對的時間,或者常數的最大值。當你設置為最大值時,nginx把Expires設置為"Thu, 31 Dec 2037 23:55:55 GMT",緩存控制設置為10年。
盡管expire指令為我們設置了Cache-Control,我們依然需要一點點調整。默認情況下,Cache-Control把內容設置為私有的,但是既然assets一般來說是公共的,由所有用戶共享, 可以把Cache-Control設置為public。
如果你向/assets目錄下發送一條web請求,你可以看到回應的http頭部有
$curl -I 127.0.0.1/assets/test.jpg
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Cache-Control: public