web-dev-qa-db-ja.com

ドメイン上のnginxプロキシのみ

Nginxでプロキシを使用してサーバーブロックをセットアップしました。これは、ディレクトリを使用してサービスにアクセスしたときに機能します。

たとえば、このconfを使用してgs.geolytix.net/geoserverにアクセスできます。

server {
  listen 80;
  server_name gs.geolytix.net;
  location /geoserver {
    proxy_set_header X-Forwarded-Host $Host;
    proxy_set_header X-Forwarded-Server $Host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://138.68.137.90:8080/geoserver;
  }
}

ここまでは順調ですね。しかし、私が達成したいのは、同じアドレスにアクセスしますが、ブラウザのアドレスはgs.geolytix.netのみです。ディレクトリなし。場所を/に変更すると、gs.geolytix.netに移動します。応答はgs.geolytix.net//です。

ありがとう、デニス

1
Dennis Bauszus

ルートURI //geoserverに静かにマップしたい場合、内部書き換えを使用した簡単な方法があります。

location = / {
    rewrite ^ /geoserver last;
}

編集:外部書き換えが必要な場合は、returnステートメントで同じロケーションブロックを使用します。

location = / {
    return 302 /geoserver;
}

ロケーションディレクティブは ここに記載 です。リライトおよびリターンディレクティブは ここに記載 です。

1
Richard Smith

Proxy_passに「URI」を含めることでこれを行うことができます。これは、一種の暗黙的な書き換えを行います。

location / {
    # Note the "/" at the end of the proxy_pass, this will cause it to 
    # replace the location block (/ in this case) with "/geoserver/"
    # when talking to Origin.
    # So gs.geolytix.net/test becomes 138.68.137.90:8080/geoserver/test
    proxy_pass http://138.68.137.90:8080/geoserver/;
}
1
Joshua DeWald