質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

2回答

1231閲覧

nginxでリバースプロキシーをしたいがうまく行かない

Seiwell

総合スコア54

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

0クリップ

投稿2023/09/08 03:51

環境

・リーバスプロキシーのための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; } }

どのようにしたら、上記のことが実現できますか。よろしくお願いします。

参考

nginxで複数のWebアプリケーションのアクセスをパスで振り分けたい

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2023/09/08 03:59

nginxはapacheに比べて圧倒的に文献がすくないのでいろいろやりたいならapacheの方が有利だと思いますが、nginxではないとだめなのでしょうか?
AbeTakashi

2023/09/08 04:18

404が出たときなどのサーバ側のエラーログをチェックしないと原因が判断できないと思います。まずはそちらを確認して、内容見ても解決ができない場合は質問文に追記してください。
Seiwell

2023/09/10 02:42

ありがとうございます。返信が遅くなりました。 > nginxはapacheに比べて圧倒的に文献がすくないのでいろいろやりたいならapacheの方が有利だと思いますが、nginxではないとだめなのでしょうか? 特に深い理由はありませんが、個人的にnginxを練習したく、nginxにしています。 >404が出たときなどのサーバ側のエラーログをチェックしないと原因が判断できないと思います。まずはそちらを確認して、内容見ても解決ができない場合は質問文に追記してください。 分かりました。追記いたします >nextcloud 側の設定が必要では?... config.phpには、IPとドメインのどちらも入れてあるので、Nextcloud側は問題ないと思われます。
guest

回答2

0

家でnextcloudとgitlabのサーバーをnginxのプロキシ設定で切り替えています(単一IPにそれぞれホスト名を設定,両方ともルートに割り合て)が,Let's EncryptでSSL化しているので今回のケースと違い,nginx側設定はお答えできないです。

コメントにある通り,nextcloud側に設定が必要で,ドメイン名をmyhost.mydomainとすると,
(IPのみでアクセスするなら192.168.0.1でも可と思います)nextcloudの設定用コマンドocc
使って次のように設定すればいいと思います。

occ config:system:set overwritehost --value="myhost.mydomain" occ config:system:set overwriteprotocol --value="http" occ config:system:set trusted_proxies 0 --value="192.168.0.1" occ config:system:set overwrite.cli.url --value="http://myhost.mydomain" occ config:system:set overwritewebroot --value="/nextcloud/"

投稿2023/09/08 11:45

ujimushi_sradjp

総合スコア2179

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

rewrite ^/(.+) $1 break; (略) proxy_pass http://192.168.0.2/$1$is_args$args;

rewrite で break しているので、proxy_pass まで到達しないのでは?
「location /」で「うまくいく」というのと矛盾しますが。

この rewrite の意図がわかりませんが、パスもクエリストリングもそのまま渡るので、rewrite 不要と思います。

location /nextcloud/ { proxy_set_header X-Script-Name /nextcloud; 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/; }

(2023/09/10 00:10) 追記

ごめんなさい、break があっても問題ないようです。
rewrite でやりたいことは、パスの /nextcloud/ をはずして proxy_pass に渡したいということであれば、以下のようになると思います。

location /nextcloud/ { proxy_set_header X-Script-Name /nextcloud; rewrite /nextcloud/(.*)$ $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; }

投稿2023/09/09 15:01

編集2023/09/09 15:10
TaichiYanagiya

総合スコア12202

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問