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

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

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

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

Q&A

解決済

1回答

11892閲覧

nginxによるリバースプロキシの設定について

fuyuan

総合スコア9

nginx

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

0グッド

1クリップ

投稿2017/06/06 07:52

###前提・実現したいこと
nginxを使用してリバースプロキシを構築し、1つのグローバルIPアドレスで複数のWEBサイトを公開しようとしています。

【confの設定】

server { listen 80; server_name www.test.com; location /a/ { proxy_pass http://192.168.0.10/; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /b/ { proxy_pass http://192.168.0.20/; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

###発生している問題・エラーメッセージ

www.test.com/a/ にアクセスするとサイトは表示されるのですが、中で読み込んでいるCSSやJavascriptが読み込まれず、結果として真っ白なページが表示されてしまいます。
ブラウザのデバッグ機能で確認したところ、www.test.com/a/css/style.cssを読み込むべきところ、www/test/com/css/style.cssとなっていました。
(CSSやJavascriptのファイルへのパスは全て相対パスで記述しています)
www.test.com/a/css/style.cssとなるようにするにはどうしたらいいでしょうか。

###補足情報(言語/FW/ツール等のバージョンなど)
nginx バージョン1.13.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

(CSSやJavascriptのファイルへのパスは全て相対パスで記述しています)

<link href="/css/style.css" ... /> などと / (スラッシュ) で始まっていませんでしょうか?
<link href="css/style.css" ... /> のように / (スラッシュ) で始まっていなければ問題ないはずです。

もし、前者でしたら、sub_filer が使えるかもしれません。
http://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter

location /a/ { proxy_pass http://192.168.0.10/; proxy_redirect default; sub_filter "/css/" "/a/css/"; }

あるいは、バーチャルホストで分けてしまった方がいいかと。

server { listen 80; server_name a.example.com; location / { proxy_pass http://192.168.0.10/; (略) } } server { listen 80; server_name b.example.com; location / { proxy_pass http://192.168.0.20/; (略) } }

投稿2017/06/06 15:49

TaichiYanagiya

総合スコア12146

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

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

fuyuan

2017/06/07 00:47

ご指摘の通り、リンクが/(スラッシュ)で始まっていました。 sub_filterは複数設定できないようでしたので、バーチャルホストで分ける方法に変更しました。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問