我的計劃
在我的應用程序中,我想要將後端與前端分開。我有多個靜態網站,vue.js訪問Express服務器提供的api。所有靜態文件都應該由nginx提供。
所以現在我的nginx的配置文件看起來是這樣的:帶有nginx和express.js的靜態網站 - 身份驗證
http {
...
upstream backend {
server localhost:3000;
keepalive 64;
}
...
server {
...
location /api {
...
proxy_pass http://backend;
}
}
}
所以要/api
所有請求都是通過快遞運行在端口3000
處理。用戶可以通過訪問後端api的前端登錄。
現在到問題:
我有一些網站(如/dash
),同時也是靜態的,而是隻應爲被認證(認證是由快遞會話處理)用戶訪問,並與特定的用戶角色(例如editor
)。
不是editor
的用戶在訪問/dash
時應該得到error 403
,而對於其他用戶,/dash
應該由nginx提供服務。
我希望我已經夠清楚了,要正確表達我的問題並不容易。我感謝任何幫助和建議,也許我的方法不是一個好主意,或者是一種不好的做法。
編輯
解決方法可以在正確答案的評論中找到。
感謝您的回答。我已經實現了身份驗證,並通過快遞處理,我使用了護照。 Nginx不應該呈現,但只能提供文件。這些文件比使用ajax訪問API。我想用nginx來提供文件,因爲它應該會更快。 但是我仍然想要限制訪問某些特定的站點,我必須使用中間件來檢查用戶是否被允許。對於其他每個站點,每個人都可以使用,所以只能使用nginx。對不起,我感到困惑... –
我相信你應該在你的整個網站上使用nginx這個事情。授權中間件應該確保正確的靜態文件被呈現並提供給用戶,nginx只是服務器的反映,而不是實際的服務器 – Jesper
好吧,那麼只需傳遞代理來表示呢? –