2

いくつかのURLを別のホストにプロキシする必要があります。実際、nginx構成をテストするために、異なるポートを持つ同じホストを使用しています。これは私の仮想ホストの定義です:

server {
    listen       8081;
    server_name  domain.com;

    location /Plasmid/ {
        proxy_pass   http://localhost:8000/Plasmid/;
    }


    location /_community/ {
         proxy_pass   http://localhost:8082/comments_api/ ;
    }

    location / {
        # rewrite cq_user_authenticated===(.*)/(.*)/iuuid=(.*)/commenti.html$  /Plasmid/comments/legacy/$3/$1 ;
        # rewrite querystring===(.*)$  /Plasmid/comments/legacy/$1 ;
        # rewrite cq_user_authenticated===([^&]*)&/.*uuid=([^/]*) /comments_api/legacy/$2 ;
        # rewrite userdetails(.*)  /Plasmid/comments/user_details ;
        root   html;
        index  index.html index.htm;
    }

}

もちろん、私のhostsファイルにはdomain.comのマッピングがあります

URLを呼び出すと:http ://domain.com:8081 / Plasma / default / page / 12http404を取得します

構成から2番目の場所を削除した場合:

location /_community/ {
    proxy_pass   http://localhost:8082/comments_api/ ;
}

必要なリソースを取得しましたが、が別のプラットフォームでホストされているため、一部が欠落しています。

[error] 1033#0: *1 open() "/usr/local/Cellar/nginx/1.2.6/html/_community/content

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

少し変更します。

location ^~ /Plasmid/ {
   proxy_pass    http://localhost:8000/Plasmid/;
}

location ^~ /_comunity/ {
   proxy_pass    http://localhost:8082/comments_api/;

何故ですか?^~手段は、ページをリクエストしたときに開始されるため:

http://domain.com:8081/Plasmid/default/page/12

そのルールに適合します。構成では、マークを使用せず、次のようなものを使用しています。

location /anylocation

それはあなたのnginx優先ルールのようです

location / {

よりも

location /Plasmid

location /_comunity

ルート ディレクティブを使用し、フォルダー内の _community/content を検索しているためですhtml(エラー メッセージが表示されます)。

つまり^~、 は よりも優先度が高くなりますno markbreakまた、各ディレクティブの後にディレクティブを追加することも役立ちproxy_passます。

于 2013-01-17T21:49:06.123 に答える