0

この質問がSO で以前に尋ねられたことは知っていますが、サーバーで複製するのに問題があります。

私がやろうとしているのは、ユーザーが にアクセスしたときmedicine.example.comに、サブドメインを にマップする必要があるということexample.com/sites/medicineです。したがって、ユーザーに表示される URL はmedicine.example.com. index.php は PHP 経由で取り除かれます。

以下のコードで502 bad gatewayエラーが発生します。

server {
    listen      80;
    listen      443 ssl;
    server_name medicine.example.com;

    location / {
        rewrite             ^([^.]*[^/])$ $1/ permanent;
        proxy_pass_header   Set-Cookie;
        proxy_pass          https://example.com/sites$request_uri;
    }
}

medicine.example.com理想的には、ソリューションはワイルドカード/正規表現ベースであり、マッピングできる以上のものになります。考え?

4

2 に答える 2

0

追加のパスは、アップストリームサーバーに自動的に転送されます。したがって、$request_uriを添付する必要はありません。Nginxは簡単です。

location / {
    proxy_pass     http://example.com/sites/medicine
}

[編集]また、SSLネゴシエーションにリソースを浪費しているため、アップストリームサーバーにhttpsを使用する必要はありません。アップストリームサーバーは内部にあるため、httpを使用する方が適切です。交通は安全です。

于 2013-03-14T14:13:00.847 に答える
0

ブラウザの URL を同じままにしたい場合は、書き換える必要はないと思います。したがって、これが必要です (@Jack には、$uri の前に追加の / がありました)。

$scheme は、ユーザーが入力した内容に応じて http または https を返す必要があります

server {
    listen      80;
    listen      443 ssl;
    server_name medicine.example.com;

    location / {
        proxy_pass     $scheme://example.com/sites/medicine$request_uri
}

ここに $uri と $request_uri のリンクがあります。基本的に $uri には引数は含まれません。 http://wiki.nginx.org/HttpCoreModule#.24request_uri

于 2013-03-14T08:20:38.740 に答える