2016-10-18 17 views
0

nodejsアプリケーション用にnginxを使用してリバースプロキシを設定しようとしています。私のノードアプリケーションは現在、example.comサーバーのポート8005上で動作しています。アプリケーションを実行してexample.com:8005に行くと、アプリケーションは完璧に動作します。しかし、私がnginxをセットアップしようとすると、私のアプリケーションはまずexample.com/test/に行くようになりますが、私が試してポストしたりリクエストしたりすると、リクエストはexample.com:8005 URLを使いたいと思います。クロスオリジンエラーCORS。私はリクエストURLにnginx URLを反映させたいが、そこに行く運がない。以下は私のnginxのdefault.confファイルです。nginxリバースプロキシが投稿/取得要求に失敗する

server { 
    listen  80; 
    server_name example; 

    location/{ 
     root /usr/share/nginx/html; 
     index index.html index.htm; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 

    location /test/ { 
     proxy_pass http://localhost:8005/; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 
+0

あるあなたのポスト/で始まる要求を取得する '/テスト/'(彼らは/テスト/場所ブロックに下落しています)? – roger

+0

@rogerいいえ、私の投稿には何も接頭辞が付きません – Woodsy

+0

その場合、私は彼らが(現在静的ファイルを提供している) '/'位置ブロックに捕まっていると思います。あなたのノードプロセスがそれらを要求したい場合は、proxy_pass http:// localhost:8005/ – roger

答えて

1

あなたが使用しているアプリケーションについて、nginxに通知する方法がいくつかあります。

したがって、すべてのapisの前にtest (location /test/api_uriという接頭辞を付けて、接頭辞/ testとproxy_passですべてのURLをノードにキャッチするか、urkに特定のパターンがある場合はそのパターンを正規表現でキャッチすると、すべてのapp1 apisにapp1が含まれていて、location ~ /.*app1.* {} location ~ /.*app2.*を使用してこれらのURLをキャッチする場合は、orderの位置を維持していることを確認してください。

デモコード:正規表現のための

server { 
    ... 
    location /test { 
     proxy_pass http://localhost:8005/; #app1 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
    location /test2 { 
     proxy_pass http://localhost:8006/; #app2 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
    ... 
} 

他のデモ、

server { 
    ... 
    location ~ /.*app1.* { 
     proxy_pass http://localhost:8005/; #app1 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
    location ~ /.*app2.* { 
     proxy_pass http://localhost:8006/; #app2 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
    ... 
} 
関連する問題