🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Mastodon

Mastodon(マストドン)は、短文投稿型SNS。サービス利用のための仮想サーバー「インスタンス」が多く存在し、サーバが一つのTwitterと比較して分散型SNSと呼ばれています。また閲覧注意ボタンがあり、タイムラインが3つ用意されていることも特徴です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

1回答

3008閲覧

リバースプロキシで複数ある自宅サーバにアクセスさせたいがうまくいかない

yamaichiro

総合スコア12

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Mastodon

Mastodon(マストドン)は、短文投稿型SNS。サービス利用のための仮想サーバー「インスタンス」が多く存在し、サーバが一つのTwitterと比較して分散型SNSと呼ばれています。また閲覧注意ボタンがあり、タイムラインが3つ用意されていることも特徴です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

3クリップ

投稿2019/05/20 19:31

編集2019/05/20 19:42

前提・実現したいこと

リバースプロキシを利用してインターネットからドメインにアクセスした時に複数の自宅mastodonサーバに繋げるようにしたいです。

・現在の機器構成です
ーーーーーーーーーーーーーーーーーーーーーーーーー
リバースプロキシ用サーバ(IP:192.168.1.2) 1台
mastodon用サーバ1(IP:192.168.1.3)
mastodon用サーバ2(IP:192.168.1.4) 
ーーーーーーーーーーーーーーーーーーーーーーーーー
どれもOSはCentOS7です。
どれもモデムからLANケーブルで直接繋いでいます。

モデムの設定で192.168.1.2だけ80と443ポート開けています。
どの機器もfirewallは80,443ポートは開けています。

ドメインはmastodon用サーバ1と2用にそれぞれ取得していて、
インターネットからアクセスした時にそれぞれのサーバに繋がるようにしたいです。

DDNS環境なので、それぞれのドメインはmydnsに登録し、グローバルIPと結びつけています。

モデムのポートを192.168.1.3だけ開けた状態でドメインからアクセスしてみましたが、繋がりました。
同じく192.168.1.4だけ開けた状態でもアクセスしてみましたが、繋がりました。

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

インターネット→リバースプロキシサーバ→mastodon用サーバという流れで繋ぎたいのですが、うまく行きません。

インターネットからドメインにアクセスすると「XXXX.XXXX(ドメイン名)」で接続が拒否されましたというエラーが出てアクセスできません。

該当のソースコード

リバースプロキシ用サーバの/etc/nginx/conf.d下に
proxy.confというファイルを作成し、下記のコードを書いています。

server{
listen 80;
server_name XXXX1.XXXX(mastodon用サーバ1用に取得したドメイン。外部からアクセスするドメイン。マスクしてます);

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 / { proxy_pass http://192.168.1.3(アクセスさせたいmastodonサーバ1のIPアドレス); }

}

server{
listen 80;
server_name XXXX2.XXXX(mastodon用サーバ2用に取得したドメイン。外部からアクセスするドメイン。マスクしてます);

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 / { proxy_pass http://192.168.1.4(アクセスさせたいmastodonサーバ2のIPアドレス); }

}

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

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

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

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

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

CHERRY

2019/05/20 21:53

まずは、nginx のログにどのようなメッセージが出ているでしょうか?
over

2019/05/21 02:22

> インターネットからドメインにアクセスすると「XXXX.XXXX(ドメイン名)」で接続が拒否されましたというエラーが出てアクセスできません。 プロキシサーバはNAPTで公開した状態になっており、外部からのドメイン名アクセス時にプロキシサーバがリクエストを受けられる状態になっているということでしょうか?ご質問文からは読み取れなかったため確認です。
yamaichiro

2019/05/21 08:26 編集

CHERRYさん >まずは、nginx のログにどのようなメッセージが出ているでしょうか? リバースプロキシサーバの/var/log/nginx/error.logがこちらです。 2019/05/21 07:35:30 [error] 19683#19683: *667 open() "/usr/share/nginx/html/robots.txt" failed (2: No such file or directory), client: 213.248.241.201, server: localhost, request: "GET /robots.txt HTTP/1.1", host: "XXXX2.XXXX" 2019/05/21 16:29:21 [error] 19683#19683: *683 open() "/usr/share/nginx/html/\cgi-bin/get_status.cgi" failed (2: No such file or directory), client: 202.99.59.230, server: localhost, request: "GET /%5ccgi-bin/get_status.cgi HTTP/1.1", host: "XXX.XXX.XXX.XXX(グローバルIPアドレス)" 2019/05/21 16:29:21 [error] 19683#19683: *683 open() "/usr/share/nginx/html/\cgi-bin/login.cgi" failed (2: No such file or directory), client: 202.99.59.230, server: localhost, request: "GET /%5ccgi-bin/login.cgi HTTP/1.1", host: "XXX.XXX.XXX.XXX(グローバルIPアドレス)" 2019/05/21 16:33:17 [notice] 1690#1690: signal process started /var/log/nginx/access.logがこちらです。 126.234.121.84 - - [21/May/2019:03:50:02 +0900] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Linux; Android 6.0; ALE-L02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36" "-" 71.6.143.90 - - [21/May/2019:04:01:45 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 zgrab/0.x" "-" 92.118.161.29 - - [21/May/2019:04:46:18 +0900] "GET / HTTP/1.0" 200 612 "-" "NetSystemsResearch studies the availability of various services across the internet. Our website is netsystemsresearch.com" "-" 178.212.92.97 - - [21/May/2019:05:21:21 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-" 54.159.44.183 - - [21/May/2019:05:44:19 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" "-" 187.11.6.200 - - [21/May/2019:06:37:18 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-" 77.78.196.56 - - [21/May/2019:07:08:52 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-" 213.248.241.201 - - [21/May/2019:07:35:29 +0900] "HEAD / HTTP/1.1" 200 0 "-" "https://www.nominet.uk/privacy-notice" "-" 213.248.241.201 - - [21/May/2019:07:35:30 +0900] "GET /robots.txt HTTP/1.1" 404 153 "-" "https://www.nominet.uk/privacy-notice" "-" 213.248.241.201 - - [21/May/2019:07:35:30 +0900] "GET / HTTP/1.1" 200 612 "-" "https://www.nominet.uk/privacy-notice" "-" 185.209.0.12 - - [21/May/2019:07:47:03 +0900] "\x03\x00\x00/*\xE0\x00\x00\x00\x00\x00Cookie: mstshash=Administr" 400 157 "-" "-" "-" 186.46.152.62 - - [21/May/2019:07:53:19 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-" 41.75.122.23 - - [21/May/2019:08:39:47 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-" 138.185.157.82 - - [21/May/2019:09:02:00 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-" 178.94.19.93 - - [21/May/2019:09:44:33 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-" 107.170.202.120 - - [21/May/2019:10:22:38 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 zgrab/0.x" "-" 43.225.169.246 - - [21/May/2019:10:57:42 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-" 111.67.75.186 - - [21/May/2019:11:09:59 +0900] "GET / HTTP/1.0" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-" 2.181.69.185 - - [21/May/2019:11:14:14 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-" 82.81.72.183 - - [21/May/2019:11:14:59 +0900] "GET / HTTP/1.0" 200 612 "-" "-" "-" 118.97.73.114 - - [21/May/2019:13:23:31 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-" 110.249.212.46 - - [21/May/2019:13:59:16 +0900] "GET http://110.249.212.46/testget?q=23333&port=80 HTTP/1.1" 400 157 "-" "-" "-" 216.201.240.245 - - [21/May/2019:15:13:20 +0900] "GET / HTTP/1.0" 200 612 "-" "-" "-" 180.254.164.166 - - [21/May/2019:15:29:47 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7" "-" 37.6.186.245 - - [21/May/2019:16:29:04 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-" 202.99.59.230 - - [21/May/2019:16:29:21 +0900] "GET /%5ccgi-bin/get_status.cgi HTTP/1.1" 404 153 "-" "UrlTest" "-" 202.99.59.230 - - [21/May/2019:16:29:21 +0900] "GET /%5ccgi-bin/login.cgi HTTP/1.1" 404 153 "-" "UrlTest" "-" 126.234.121.84 - - [21/May/2019:16:35:18 +0900] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Linux; Android 6.0; ALE-L02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36" "-" overさん >プロキシサーバはNAPTで公開した状態になっており、外部からのドメイン名アクセス時にプロキシサーバがリクエストを受けられる状態になっているということでしょうか?ご質問文からは読み取れなかったため確認です。 その通りです。リバースプロキシサーバのみが公開しており、mastodon用サーバ1と2は公開していません。
yukky1201

2019/05/21 09:02

ログすべて転記されてますが、せめて事象のおきたログを抜粋するくらいされるとよろしいかと。 実際にアクセスしたときのログが特定できないと、解決は難しいです。
yamaichiro

2019/05/21 09:06

yukki1201さん 失礼しました。今日アクセスしてみたのは16時半ごろなので上記のここの辺りが該当する箇所と思います。 ・/var/log/nginx/error.log 2019/05/21 16:29:21 [error] 19683#19683: *683 open() "/usr/share/nginx/html/\cgi-bin/get_status.cgi" failed (2: No such file or directory), client: 202.99.59.230, server: localhost, request: "GET /%5ccgi-bin/get_status.cgi HTTP/1.1", host: "XXX.XXX.XXX.XXX(グローバルIPアドレス)" 2019/05/21 16:29:21 [error] 19683#19683: *683 open() "/usr/share/nginx/html/\cgi-bin/login.cgi" failed (2: No such file or directory), client: 202.99.59.230, server: localhost, request: "GET /%5ccgi-bin/login.cgi HTTP/1.1", host: "XXX.XXX.XXX.XXX(グローバルIPアドレス)" 2019/05/21 16:33:17 [notice] 1690#1690: signal process started ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ・/var/log/nginx/access.log "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7" "-" 37.6.186.245 - - [21/May/2019:16:29:04 +0900] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-" 202.99.59.230 - - [21/May/2019:16:29:21 +0900] "GET /%5ccgi-bin/get_status.cgi HTTP/1.1" 404 153 "-" "UrlTest" "-" 202.99.59.230 - - [21/May/2019:16:29:21 +0900] "GET /%5ccgi-bin/login.cgi HTTP/1.1" 404 153 "-" "UrlTest" "-" 126.234.121.84 - - [21/May/2019:16:35:18 +0900] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Linux; Android 6.0; ALE-L02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36" "-"
yukky1201

2019/05/21 13:00

/usr/share/nginx/html/\cgi-bin/get_status.cgi が見つからないと出ていますね cgi-binの前についている\(バックスラッシュ)が不要だと思うので、アクセスしたときのURLを確認いただくとか、CGI関連の設定箇所を再確認するべきです。
yamaichiro

2019/05/21 17:54 編集

yukky1201さん。 ありがとうございます。 nginxをほとんど触ったことがなく分からないのですが、CGI関連の設定箇所はどこを見れば良いのでしょうか?
take88

2019/05/28 08:33

そのログは間違いなくあなたがアクセスしたときのログですか? ログにでているIPとUserAgent「UrlTest」、アクセスしたときのURL が cgi-bin/get_status.cgi とかそのへんで判断出来ると思いますがどうでしょうか?判断つかないなら、tailf コマンドで access_log を開きっぱなしにして、その状態で インターネットからアクセスしてみてください。
over

2019/05/29 02:11

ご返信頂いていたこと気付きませんでした。すいません。 ご質問文にある「mastodon用サーバ1(および2)用に取得したドメイン」とご自身環境のグローバルIPを紐づけて、nginxでは名前ベースで振り分けする構成としているで良いでしょうか? そうであれば、まずは振り分けられる側のサーバに静的コンテンツを置いて簡単なテストを実施して切り分けてみては如何でしょうか。
yamaichiro

2019/06/13 16:40

take88さん 返答遅くなりました。今しがたアクセスしてみました。 以下がログです。 202.214.198.144 がアクセスした端末のログです。 202.214.198.144 - - [14/Jun/2019:01:35:36 +0900] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Linux; Android 6.0; ALE-L02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.89 Mobile Safari/537.36" "-" 202.214.198.144 - - [14/Jun/2019:01:35:52 +0900] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Linux; Android 6.0; ALE-L02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.89 Mobile Safari/537.36" "-"
take88

2019/06/13 22:34 編集

ありがとうございます。応答コードが301=リダイレクト ですね。リダイレクト先のURLが知りたいですね。端末の方でHTTPヘッダーを確認してください。「location」というヘッダーがリダイレクト先のURLです。やり方は、端末で Chromeを起動して F12を押して Networkタブを選びます。URLを入力してEnterを押すと通信記録が一覧で表示されますので、問題のドメインの行を探して、「status」が301になってる行があったらクリックしてください。クリックすると表示される領域にある「Headers」をクリックするとHTTPヘッダーを確認できます。その内容を コピペして ください。
yamaichiro

2019/06/14 16:49

take88さん。 試してみましたが、通信記録に該当のドメインが出現せず、Statusが301のものがありません。
take88

2019/06/18 09:17

curl は使えますか? 端末の方で 「curl -v XXXX.XXXX(ドメイン名)」を実行してみてください。
guest

回答1

0

modem にNATの設定が要ります。

internet側からアクセスするには、global IP でアクセスする必要があります。自宅の192.. では繋がりません。
外からアクセスするには、DDNS -> modem -> PC でアクセスする必要があって、modem -> PCの部分がうまくいっていないと思われます。DDNS は、modem のインターネット側にaddress を振っていて、インターネットからは、modem にアクセスします。一方、192.168.1.2 にはインターネット側から見えるaddressは無いと思われます。
そのために、modem に来たパケットを192.168.1.2 に自動的に送るような設定が必要です。その送る機能をNATと呼んでいます。

投稿2019/05/28 15:22

gm300

総合スコア580

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

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

ozwind918

2019/05/28 15:39

ログが出力されているようですので、関係ないと思われます。 また、説明内容的にddnsとnatの動作を勘違いしているかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問