簡體   English   中英

清漆,nginx和node.js:具有node.js后備功能的靜態nginx html頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM