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

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

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

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

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

Q&A

解決済

1回答

7049閲覧

NginxとApache共存環境での443ポート以外のSSL使用方法

mosin_nozomi

総合スコア29

CentOS

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

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

0グッド

1クリップ

投稿2017/04/19 11:18

CentOS7にて話題のMastodonサーバーに挑戦しています。

QiitaなどでMastodonサーバー構築の手引きのようなものがありますがどこもNginxを用いて構築しています。

現在、80番ポートと443ポートがApacheで使用中なので、Nginxでは8080ポートと4430ポートを使用したいと考えています。

しかし、Mastodon公式ページからコピーしてきたNginxConfigファイルのListenをそれぞれ8080と4430に変更し、接続してみてもGoogleChromeで「このサイトは安全に接続できません ERR_SSL_PROTOCOL_ERROR」が返ってきて接続できません。

Apacheを落とし80番と443番ポートを用いてnginxを起動すると接続できるのでhttpからhttpsへリダイレクトするときにエラーが起きているのかと予想しています。

nginx

1> server { 2> listen 8080; 3> listen [::]:8080; 4> server_name mastodon.ドメイン; 5> return 301 https://$host$request_uri; 6> }

return されるときに443番ポートへ飛ばされているのかと考えているのですが、原因、解決方法などご教授いただけますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

return については、URL 箇所でポート番号を指定するといいと思います。

return 301 https://$host:4430$request_uri;

https://ホスト名:4430/ERR_SSL_PROTOCOL_ERROR になるのは、また別の原因かもしれません。
ログ (/var/log/nginx/error.log など) に何か出力されていませんでしょうか。


(2017/04/20 11:21) 追記

原因の切り分けのため、以下を順に確認くださいませんでしょうか。

1. CentOS 7 のシェルから curl で 8080 番ポートに接続し、リダイレクトされる URL を確認する。 $ curl -D - -H "Host: example.com" http://127.0.0.1:8080/ HTTP/1.1 301 Moved Permanently (略) Location: https://example.com:4430/ 2. CentOS 7 のシェルから curl で 4430 番ポートに接続し、応答を確認する。 $ curl -D - -H "Host: example.com" -k https://127.0.0.1:4430/ HTTP/1.1 200 OK または何らかのエラー? エラーの場合、エラーログを確認。

投稿2017/04/19 16:03

編集2017/04/20 02:21
TaichiYanagiya

総合スコア12141

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

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

mosin_nozomi

2017/04/19 16:41

return 301 https://$host:4430$request_url; を試してみましたが、やはりSSLエラーが返ってきます。 nginxのerror.logを見てみましたが、何も出力されていませんでした。 また、httpdをstopし、nginxのdefault.conf(80番をlisten)を読み込んでみましたが、ローカル、グローバル両方とも接続できませんでした。(Connection Failed) さらに、default.confを無効化後、mastodon公式からコピーしたconfigのポートを80と443に戻すとやはり接続できます。 何か手はありますでしょうか
mosin_nozomi

2017/04/21 03:11

追記ありがとうございます。また、遅くなってしまい申し訳ありません。 8080番ポートからの4430番へのリダイレクトは成功しておりました。 しかし、4430番ポートへの接続では HTTP/1.1 302 found と出力され、エラーログを見ると "home/mastodon/live/public/" failed(13:Permission denied) とのエラーが出ておりました。 /home/mastodon/liveが確かに存在しないので、別のディレクトリなど試してみましたが同じエラーになってしまいました。 また、80番443番ポートを使用した時は/home/mastodon/live/publicでPermission deniedにならないようです。 お手数おかけしてしまい申し訳ないですが、さらなるご教授を賜れますと幸いです
TaichiYanagiya

2017/04/21 04:39

443→4430 の変更と Permission denied とは関連がないように思うのですが、何ででしょうね。 302 found はおそらくプロキシ先の mastodon(http://127.0.0.1:3000)が返しているのだと思いますが、 そのときの Location: ヘッダは https://example.com:4430/ で始まっていますでしょうか。
TaichiYanagiya

2017/04/21 06:01

mastodon(http://127.0.0.1:3000) がリクエストの Host: ヘッダを見て Location: を返しているのかどうかわかりませんが、試しに「proxy_set_header Host $host:4430;」にしてみるとどうなるでしょうか。
mosin_nozomi

2017/04/26 14:09

Yanagiya様、度重なる解決法のご提案ありがとうございました。 proxy set header を変更してもpermission deniedが返ってきてしまい、お手上げ状態になってしまったため、Apacheとnginxの共存をあきらめ、nginxのみを使用する方針に転換いたしました。 nginxのみならばテキストを書き換えるだけでサブドメインとして扱うことができ、特に問題もなく使用できました。 貴重なお時間をありがとうございました。またの機会がありましたらよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問