2016-05-12 8 views
2

Nginx初心者として、私は外部ドメインに働くリバースプロキシを取得しようとしています。その後、私は内部ドメインに移植する必要があります。外部ドメインにプロキシをリバースしようとすると、私は壁に当たっているように見え、応答は404ではありません。外部のWebサイトへのNginxの逆フォル​​ダの場所

目的は、http://localhost/exampleにアクセスしようとしていますが、リバースプロキシはwww.example.comにアクセスしています。

これは私の設定です:

server { 
    listen  80; 
    server_name localhost; 

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

    location /example/ { 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_pass http://www.example.com/; 
    } 

    #error_page 404    /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 
} 

私が間違っているの何の任意のヒント?

答えて

1

httpについて話すとき、webserverは、Hostヘッダーをチェックすることで、どのサーバーが要求されたかを検出します。あなたの場合、nginxに別のサーバーへのプロキシ要求を指示しますが、オリジナルのHostヘッダーをそのサーバーに渡すように指示します。明らかに、そのドメインで要求を受け入れることができるリモートサーバー上に構成はありません。それで、それは404であなたに応答します。

ヘッダーをproxy_set_header Host www.example.com;に変更するだけで、www.example.comの代わりにproxy_passディレクティブと同じホストを使用する必要があります。 (または同じ変数)

+0

これは正しいブロックですか? 場所/例/ { proxy_set_headerホストwww.example.com; proxy_set_header X-Real-IP $ remote_addr; proxy_pass h * ttp://www.example.com; } これを試してみると、実際には別のエラーが発生しますが、 500 - 内部サーバーエラー Marco

+0

@Marco proxy_passにはprotocolとuriを含むurlが含まれている必要があります。だから、最初の例 'proxy_pass http://example.com/;では大丈夫でした。 –

関連する問題