2017-06-11 26 views
0

ドメインの特定のサブドメインをバックエンドにリダイレクトして、バックエンドに渡されるURLの接頭辞 としたいと思います。これは、私が単一のサーバを持っており、複雑さが増してバックエンドの複数のドメインを処理する必要がないためです。したがってNGINX proxy_passのURLとしてサブドメインを書き換える

Iしている場合:記載

  • sub1.domain.com =>domain.com/sub1/
  • sub1.domain.com/pathname =>domain.com/sub1/pathname
  • sub1.domain.com/pathname?searchquery =>domain.com/pathname?searchquery

などを。

これまでのところ、私は出ていることは以下の通りです:

server { 
    charset utf8; 
    listen 80; 
    server_name 
    domain.com, 
    sub1.domain.com, 
    sub2.domain.com, 
    sub3.domain.com, 
    sub4.domain.com, 
    sub5.domain.com; 

    # Default 
    if ($host ~ ^domain\.com) { 
    set $proxy_uri $request_uri; 
    } 
    # Rewrites 
    if ($host ~ (.*)\.domain\.com) { 
    set $proxy_uri $1$request_uri; 
    } 

    location/{ 
    expires 1s; 
    proxy_pass http://node:8080$proxy_uri; #node is an internally listed host (docker container) 
    proxy_set_header Host domain.com; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_cache_valid 200 1s; 
    } 
} 

しかし残念ながら、私が得るすべては502です。次のログで不正なゲートウェイ、2017/06/11 12:49:18 [error] 6#6: *2 no resolver defined to resolve node, client: 136.0.0.110, server: domain.com:8888,, request: "GET /favicon.ico HTTP/1.1", host: "sub1.domain.com:8888", referrer: "http://sub1.domain.com:8888/"私は私の目標を達成することができますどのように任意のアイデア?どんな助けも大いに評価されるでしょう:)

乾杯!

答えて

0

私はそれほど遠いわけではありません。サーバーブロックが目的の効果を得るためには、サーバーブロックが十分なものになる前に上流のブロックを追加することでした。

upstream backend { 
    server node:8080; 
    keepalive 8; 
} 

私も少し次に、プロキシパスラインを変更する必要がありました:

proxy_pass http://backend$proxy_uri; 

問題がありそうなnginxのプロキシパスのURLを解析する方法に関連する1つだったに違いない - これを読んで、誰もができればその理由を洞察してください、この回答を編集してください!

関連する問題