ルートからの nginx リダイレクトの設定

ルートからの nginx リダイレクトの設定

nginx を設定しようとしていますが、何度試してもうまくいきません。必要なのは以下のとおりです。

  • ポート80は/downloadnginxによって提供されています
  • ポート80、それ以外は同じマシンのポート8080にリダイレクトされます

これはうまく動作しますが、ルートの場合にのみ必要です(http://myhost/) クライアントは のデフォルトアプリにリダイレクトされます/Games。現在の設定が間違っており、無限ループにリダイレクトされます。ここしかし、うまく動作しませんでした。リダイレクトの例:

ex1: http://myhost/  --> http://myhost/Games --> http://localhost:8080/Games
ex2: http://myhost/Books --> http://localhost:8080/Books

私が試してみました

        location / {
            proxy_pass  http://localhost:8080/Games;
        }

しかし、これはすべてに作用するようです (例: /Books、/XYZ、...)。正確なルートが指定されている場合のリダイレクトが最もクリーンだと思います。

また、これを HTTPS で複製する必要があります。これは「ストリーム」要素でも機能すると思います。


nginx.conf:

http {
    server {
        listen  80;
        root /home/www/;
        location = / {
            return 301 http://$host/Games;
        }
        location / {
            proxy_pass  http://localhost:8080;
        }
        location /download/ {
            ....
        }
    }
}

stream {
    server {
        listen  443;
        ...
    }   
} 

答え1

ここでの質問は正確には何ですか? あなたの設定は私にとってはうまくいきます:

server {
    listen 80;
    listen [::]:80;

    server_name 192.168.0.2;
    root /var/www;

    location = / {
        return 301 http://$host/folder;
    }

    location / {
        proxy_pass http://otherserver:80;
    }
}

ログ:

[22/Feb/2018:17:04:55 +0100] "GET / HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder/ HTTP/1.1" 200
[22/Feb/2018:17:11:29 +0100] "GET /index.html HTTP/1.0" 200

ログには何が記録されていますか? リクエストがプロキシ化にまったく失敗していますか、それともローカルホストが問題の原因ですか? ローカルホストの構成はどのようになっていますか? 情報が少なすぎて、お役に立てません。

また、これを HTTPS で複製する必要があります。これは「ストリーム」要素でも機能すると思います。

listen 443何を意味しているか分かりませんが、の代わりに同じ設定で別のサーバーブロックを追加しlisten 80、 ssl ディレクティブを追加するだけで済みます。

関連情報