2015-10-20 23 views
12

私は、アプリケーションごとに異なるポートを持つ単一のIISサーバー上で複数のASP.NETアプリケーションを実行しています。私のクライアントは、ポート80のみIISサーバーのリバースプロキシとしてnginxを使用する

nginxのは私の個々のASP.NETアプリケーションが稼働してもされているポート80上のすべての権利を実行しているを使用してすべての私のアプリケーションにアクセスできるように、私は、同じサーバー上のnginxをインストールしている

は、私はその後、私はnginxのを再開し、私のブラウザにURLを入力 http://127.0.0.1/students/

location /students/ { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass http://127.0.0.1:84; 
    } 
    location /registration/ { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass http://127.0.0.1:82; 
    } 

nginxのconfのファイルでこれらの変更を行いました。 Nginxは404ページを提供しました。

私はconfファイルに他の変更を加えませんでした。

私は間違っていますか?

+0

その設定は完全に正しいと思われます。私たちの仕事では、URI部分を持たないロケーションブロック内のproxy_passを使用して、URIを変更しないで別のサーバにリクエストを渡すという、私の仕事に非常によく似た設定をしています。 Nginxがロケーションブロックに入っているかどうかを確認できますか? – ThrawnCA

答えて

-2

は、私はあなたが持っている問題は、URLパスの開始に関連していることを信じて、このディレクティブ

upstream http://localhost { 
    server 127.0.0.1:84; 
} 

と第二

+0

Nginxがエラーを返します...上流はここでは許可されていません – Shuaib

+0

あなたの答えにいくつかの説明を加えてください! –

11

ための同じブロックを使用してみてください。 URL http://120.0.0.1:84/students/はページを返しますか、404ですか? http://127.0.0.1:80/students/にアクセスし、http://127.0.0.1/のページを参照すると、この設定ではnginxがパスを変換しないことがわかります。むしろ、プロキシされたサーバーでまったく同じパスを探します。

あなたはproxy_passディレクティブでURLの末尾に/を配置する必要があります。

location /students/ { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:84/; 
} 

これは、nginxのののconfigsで微妙だが重要な落とし穴です!バックスラッシュを含まない場合、http://127.0.0.1:84はサーバーの場所として扱われます。バックスラッシュがある場合、URLとみなされ、プロキシURLのすべての部分を 'location'部分に置き換えます。

+0

もし私がhttp://127.0.0.1:84/studentsを閲覧すると、私は私のページを取得します。なぜなら、IISは84でリッスンしているからです。私が望むのは、私がhttp://127.0.0.1/studentsをブラウズすれば、nginxはhttp://127.0.0.1:84へのURL。これはnginxで可能ですか? – Shuaib

+0

@ Shuaib私はこれが正確に上記の設定で起こると信じています。 – jwg

+0

まだ404ページがnginxのサービスを受けています。 – Shuaib

0

IIS 127.0.0.1:84/studentsをnginx 127.0.0.1/studentsに変換する場合。以下のコードを試してください..

location /students { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:84/students; 
} 
location /registration { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:82/registration; 
}