[英]varnish, nginx, & node.js: static nginx html pages with node.js fallback
我在Nginx前面的EC2上運行清漆,該清漆路由到node.js。
我想要的是通過nginx從某些路由(例如/
for index.html
)提供特定的靜態HTML頁面,但所有其他路由都由node.js處理。
例如, /
將由nginx以靜態HTML頁面的形式發送,而任何不匹配的內容(例如/dynamic_stuff
或/dynamic_stuff2
)將由node.js處理。
在其他聯機線程中,其他人將node.js完全放在一個單獨的目錄中,例如/node/dynamic_stuff
但我不想為路由選擇一個單獨的目錄。
現在我有/
擔任了由node.js的其他事物一樣,但如果我只是在測試我的node.js服務器,我把它記下來,我想/
退卻到的nginx的版本index.html
。 在這種情況下,如果關閉了我的node.js服務器,那么我會得到502 Bad Gateway。
我不太擔心通過nginx vs.node.js來處理文件的性能,我只是想,如果node.js出於某種原因出現故障,我想讓nginx處理基本頁面。
相關腳本:
location = / {
index index.html
root /path/to/public
try_files $uri $uri/ index.html;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass node_js;
}
如果我使用上面的代碼,所有請求仍將發送到node.js,包括/
。
我認為如果只是index.html,最簡單的方法是將index設置為
index index.html
root /path/to/public
現在,應該從nginx提供公共目錄中的所有文件。
現在,將此index.html放在節點應用程序的公共目錄中。 其余的將從nginx代理到該節點實例。
當然,您可以根據需要將其他靜態html放在子目錄中:
public/about(index.html
public/faq/index.html
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.