2016-06-23 2 views
1

nginxを使用してwww.example.comにサービスを実行するとします。私はport:80に全体のトラフィックを持っています。 httpsが必要です。私はexample.com/にあったサービスを削除し、ユーザーを直接example.com/dir/に移動することに決めました。 StackOverflowの上nginx.confの '='の意味

最も人気のある解決策は、残念ながら、それはhttp://www.example.com/dir/代わりのhttps://www.example.com/dir/を楽しみにし

location =/{ 
    return 301 /dir/; 
} 

を追加することです。

location =/{ 
    return 301 https://$host/dir/; 
} 

location =/{ 
    return 301 https://$http_host/dir/; 
} 

としたが、彼らの両方が失敗します。私も試してみました。一方

、私は見つけることができます:

location/{ 
    ... 
} 

このファイルに。ここで私は2つの質問がある

  1. location =/{}location/{}の違いは何ですか?
  2. 私の問題の設定方法はありますか?

答えて

1

また、 "="修飾子を使用すると、URIと場所の完全一致を定義することができます。完全一致が見つかった場合、検索は終了します。たとえば、「/」リクエストが頻繁に発生する場合、「location = /」を定義すると、最初の比較の直後に検索が終了するため、これらのリクエストの処理が高速化されます。そのような場所には、明らかに入れ子にされた場所は含まれていません。

あなたがここの場所のブロックの詳細を見つけることができます

Docs

EDIT:あなたは例えばsslパラメータを使用する必要がありHTTPSを使用するようにコメントして以下で述べたように、サーバー・ブロックは次のようになります。

server { 
      listen 443  ssl; 
      ssl_certificate /path/to/fullchain.crt; 
      ssl_certificate_key /path/to/key.pem 

      location/{ 
        proxy_pass http://xxx.xxx.xxx.xxx:80; 
        proxy_redirect off; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      } 
} 
+0

あなたの答えをありがとう。それは範囲が増加するので、ゆっくりとした言葉遣いを感じてください。問題を解決するのに役立つなら、あなたの答えを解決策としてマークします。 – xenteros

+0

2番目の質問に対する回答 - HTTPSサーバを設定するには、 'ssl'パラメータを使用する必要があります – tommyyards

+0

私の現在の設定では、https://を使用できます - それは他の設定ファイルの1つです – xenteros