有個SPA項目倦淀,UI和API都使用Python默認(rèn)的Web Server声畏,感覺不太好。今天嘗試了一下將二者分離插龄,使用openresty作為Web Server和Reverse Proxy(這里把Openresty當(dāng)作nginx用了,沒有寫lua代碼糠雨,后續(xù)有需求的話徘跪,可以考慮用lua)。遇到了一些問題垮庐,經(jīng)過一番Google,最終解決逗抑。
問題1:React-router不工作
在React-router中定義的路由不起作用。nginx總是報404邮府。
解決:使用try_files溉奕。當(dāng)在靜態(tài)文件中找不到路由后,返回index.html腐宋,然后react-router就起作用了。
location / {
root /mnt;
index index.html;
# Allow react-router to work if URI cannot be found as static file.
try_files $uri /index.html;
}
問題2:CSS作為靜態(tài)文件加載了欺嗤,但沒起作用
同樣的Webpack編譯后的代碼卫枝,在Python的Web Server中CSS可以加載并起作用,但nginx就是不起作用校赤。百思不得其解吆玖,于是跟蹤了所有的CSS加載過程,發(fā)現(xiàn)CSS加載時Content Type為“text/plain"怜奖,不是”text/css“,所以才想起是MIME type的問題歪玲。
解決:添加include mime.types;
后問題解決掷匠。Openresty中不會加載默認(rèn)的mime.types,需要自己手動添加讹语。