nginx を設定しようとしていますが、何度試してもうまくいきません。必要なのは以下のとおりです。
- ポート80は
/download
nginxによって提供されています - ポート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 ディレクティブを追加するだけで済みます。