2017-01-20 6 views
0

Angular2アプリを実行しているNGINXサーバー(nginx2)へのすべてのリクエストをプロキシするNGINXサーバー(nginx1)が1台あります。/apiへのリクエストのみasp.netコアサーバー(nginx3)に送信する必要があります。 :私は完全なangular2ルート(EXを入力した場合、私はmywebsite.comを開こうとすると、それが正しく開くproxy_passを使用してもNGINXが404を返す

worker_processes 1; 
events { 
    worker_connections 1024; 
} 
http { 
    include  mime.types; 
    default_type application/octet-stream; 
    sendfile  on; 
    keepalive_timeout 65; 
    server { 
     listen  4999; 
     server_name 'mywebsite.com'; 
     location/{ 
      root /usr/share/nginx/html; 
      try_files $uri$args $uri$args/ index.html; 
     } 
     #error_page 404    /error.html; 
     # redirect server error pages to the static page /50x.html 
     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 
    } 
} 

、しかし:以下nginx2構成に従ってください

server { # should proxy all requests to nginx2 and /api to nginx3 
    listen 80; 
    server_name mywebsite.com; 
    location/{ 
     proxy_set_header Host $host; 
     proxy_pass http://mywebsite.com:4999/; 
    } 
    # proxy para o backend 
    location /api { 
     proxy_pass http://mywebsite.com:5001; 
     proxy_set_header Host $host; 
    } 
    } 

:以下nginx1構成をフォローhttp://mywebsite.com/orders)、nginx1からエラー404が表示されます。

私には何が欠けていますか?

答えて

0

私はあなたの問題はあなたのプロキシであるとは思わない、それはあなたのNGINX2です。このサーバでは、フォルダ/オーダーは存在せず、プロキシNGINX1に404を返します。これにより、呼び出し元に返されます。これを機能させるには、ファイルやフォルダではないものをmain2のindex.htmlファイルに書き換える書き換えルールをNGINX2に追加する必要があります。

+0

こんにちは、マイク、私はこの記事にnginx2の設定を追加しました。 nginx2には次の行が含まれています。try_files $ uri $ args $ uri $ args/index.html; –

+0

さて、大丈夫でしょう。私が見る唯一の奇妙なことはdefault_typeアプリケーション/ octet-streamです。 – MikeOne

+0

私は 'default_type application/octet-stream;'行を削除しました。何も変わっていません。働いていない。 :-( –

-1

Angular2ルーターに関連しているようです。さて、それは私がhttp://mywebsite.com/#/ordersのように完全なURLを入力するか、任意のページを更新するたびに完璧に動作

import {HashLocationStrategy, LocationStrategy} from "@angular/common"; 

    providers: [ 
      {provide: LocationStrategy, useClass: HashLocationStrategy }, 
      ... 
    ] 

: は、私は私のapp.module.ts(nginx2の下で実行されている)に次の行を追加しました。

私はまだこれが最善の解決策ではないと思っています。すべてのパスに '#'という接頭辞が付きますが、少なくとも動作します。でangular2 HashLocationStrategyについて:-)

さらに詳しい情報:https://angular.io/docs/ts/latest/guide/router.html

関連する問題