nginxがバックエンドにcherrypy、フロントエンドにReactJSを提供しています。どのようにリアクションルータをnginx/cherrypyと現在のreactjsアプリに設定することができますか
アプリが増えたので、反応ルータを使用してURLのあるページにすばやくアクセスできます。 たとえば、my.domain.name/userがユーザーを管理するアプリケーションの一部を取得したいとします。今、私のアプリはAppMainをレンダリングし始めるまで <script src="/js/bundle.js"></script>
:
私の単一のindex.htmlは、このようなJSバンドルが含まれています。 は今、私はNOMATCHクラスを作成し、私はこのように、反応し、ルータに両方を入れている:それはうまく働いたこれをしようとすると
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={AppMain}>
<Route path="*" component={NoMatch}/>
</Route>
</Router>
), document.getElementById('main-central'));
。 http://my.domain.nameを使用すると、以前のように私にアプリを渡しました。 しかし、今度は、http://my.domain.name/whateverは、NoMatchがレンダリングしているものをレンダリングする必要があります。しかし代わりに、私はnginx 404ページを取得します。
だから、私はnginx側の設定が必要だと思うかもしれませんが、多分(私は上記の全体の話を持っている理由です)。 (HTTP一部)
nginxの構成は次のようになります。
upstream app_servers {
server 127.0.0.1:9988;
}
# Configuration for Nginx
server {
location/{
root /var/www;
index index.html;
}
# Proxy connections to the application servers
# app_servers
location /api {
proxy_pass http://app_servers/api;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
あなたはCherryPyには、すべての/ API/*パスを取得している見ることができるように。
静的コンテンツは、/ css、/ imgなどの下に適切に配信されます。
だから私は、JS/bundle.js私はnginxの中にいることを設定するにはどうすればよい
に行くに静的ではなく/ APIではないすべてのものがありますか? cherrypyやjavascriptで何か別のことをする必要がありますか?
ありがとうございます。ここに私自身の答えを見つけ
インデックスのindex.htmlとtry_filesのindex.htmlは私のために働きました! – Fritex
このきちんとしたtry_filesルータートリックは、Google Storage Bucketでnginxウェブサーバーなしで使用できます:) https://www.ackee.cz/blog/en/how-to-host-static-react-apps-in-google- storage-bucket-behind-cloudflare-cdn / – bartimar