この質問は何度も尋ねられるかもしれませんが、私は読んでいますが、それでも私が欲しいものを得ることができません。
172.17.1.10:8080/myapp
でアプリケーションを実行しています。
sub.domain.com
のみを使用してアプリケーションにアクセスするnginxリバースプロキシをセットアップし、アドレスバーの「myapp」を非表示にします。
私の現在の設定は:
server{
listen 80;
server_name sub.domain.com;
location /myapp {
rewrite ^/myapp(.*) /$1 break;
proxy_pass http://172.17.1.10:8080;
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;
include /etc/nginx/proxy_params;
}
}
Nccインデックスページを
sub.domain.com
と
sub.domain.com/myapp
tomcatインデックスページで表示し続けますが、何が欠けていますか?
この場合、書き換えさえ必要ないようです。これで十分です:
更新された場所:
server{
listen 80;
server_name sub.domain.com;
location / {
proxy_pass http://172.17.1.10:8080/myapp/;
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;
include /etc/nginx/proxy_params;
}
これは、バックエンドをシミュレートするサーバーの例です。
あなたの172.17.1.10:8080は私のlocalhost:8088になります:
server {
listen 8088;
location /myapp {
# if the "login" request param = true, will simulate a redirect to a login page to proxy;
if ($arg_login = "true" ){
return 301 http://sub.domain.com/login;
}
#otherwise return normal content
return 200 "$request_uri OK";
}
#Simulated login page
location /myapp/login {
echo "Login page: Provide credentials!";
}
}
したがって、(ブラウザを使用して)私がこれを要求した場合:
http://sub.domain.com/api/test
取得します:
/ myapp / api / test OK
一方、リクエストした場合:
http://sub.domain.com/api/test?login=true
取得します:
ログインページ:資格情報を入力してください!