環境
・リーバスプロキシーのためのnginx(IP:192.168.0.1
)
・Nextcloud(IP:192.168.0.2
)
・その他のサービス(IP:192.168.0.3
)
実現したいこと
一つのドメインもしくはIPアドレス(192.168.0.1)で、複数のサーバ上で動作しているサービスにアクセスできるようにしたいと考えています。例えば、http://192.168.0.1/
と来たらnginxのデフォルトページを、http://192.168.0.1/nextcloud
と来たらNextcloudのページを表示するということです。ネット上の記事を参考に、nginxの設定ファイルを書いて見ましたが、nginxのlocation
を変えると動作しません。
うまくいく場合(/
)
locationを/
にするとうまくいきます。(下記の設定ファイルは、nextcloudへのアクセスを想定しています。)
server { listen 80; server_name _; location / { rewrite ^/(.+) $1 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://192.168.0.2/$1$is_args$args; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
うまくいかない場合(/nextcloud
)
locationを/nextcloud/
にすると、うまく動作しません。(404もしくは接続できませんとの趣旨のエラーがブラウザーに表示されます。)
server { listen 80; server_name _; location /nextcloud/ { proxy_set_header X-Script-Name /nextcloud; rewrite ^/(.+) $1 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://192.168.0.2/$1$is_args$args; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
どのようにしたら、上記のことが実現できますか。よろしくお願いします。
参考
