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

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

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

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

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

nginx

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

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

Q&A

1回答

2768閲覧

nginxリバースプロキシ経由のHTTPS接続でApacheのMT環境をSSL化したい

sasaki_nuno

総合スコア13

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

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

nginx

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

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

0グッド

2クリップ

投稿2020/01/19 12:58

編集2020/01/29 06:12

前提・実現したいこと

nginxで稼働するサーバー(サーバーA)からリバースプロキシを設定し、apacheで稼働するサーバー(サーバーB)にMTを動かしています。
ドメインはexample.com、ドメインはサーバーAのIPにむいています。
サーバーAにはWordPressが動いており、example.comだとWP、サブディレクトリ example.com/sub だとMTを表示するよう設定しています。

WordPress(サーバーA)
https://www.example.com

MovableType(サーバーB)
http://www.example.com/sub

上記の通り現在WordPressはSSL化しておりますが、MTはSSLしていないため、MTをSSL化したいと考えているのですが、リバースプロキシの設定がうまくいかずMTをうまくSSL化できていません。

現状のnginxのconf設定

nginx.conf

1 2#server { 3# listen 80; 4# listen 443; 5# server_name example.com; 6# return 301 https://www.example.com$request_uri; 7#} 8 9server { 10 listen 443 default_server; 11 ssl on; 12 13 root /var/www/html; 14 index index.php index.html index.htm; 15 16 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 17 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 18 19 try_files $uri $uri/ /html/example/index.php?$args; 20 server_name example.com; 21 22 location ^~ /sub/ { 23 proxy_pass http://xxx.xxx.xxx.xxx/sub; 24 proxy_redirect http:// https://; 25 proxy_set_header Host $host; 26 proxy_set_header X-Real-IP $remote_addr; 27 proxy_set_header X-Forwarded-Proto $scheme; 28 proxy_set_header X-Forwarded-Host $host; 29 proxy_set_header X-Forwarded-Server $host; 30 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 } 32 33 location / { 34 ssi on; 35 ssi_last_modified on; 36 try_files $uri $uri/ @wordpress; 37 } 38 39 location ~ .html$ { 40 root html; 41 fastcgi_pass 127.0.0.1:9000; 42 fastcgi_index index.html; 43 fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 44 include fastcgi_params; 45 } 46 47 location ~ .php$ { 48 try_files $uri @wordpress; 49 fastcgi_index index.php; 50 fastcgi_split_path_info ^(.+.php)(.*)$; 51 fastcgi_pass 127.0.0.1:9000; 52 fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 53 include fastcgi_params; 54 } 55 56 location @wordpress { 57 fastcgi_index index.php; 58 fastcgi_split_path_info ^(.+.php)(.*)$; 59 fastcgi_pass 127.0.0.1:9000; 60 fastcgi_param SCRIPT_FILENAME /var/www/html/example/index.php; 61 include fastcgi_params; 62 } 63} 64 65server { 66 67 listen 80; 68 root /var/www/html; 69 70 index index.php index.html index.htm; 71 72 try_files $uri $uri/ /html/example/index.php?$args; 73 74 server_name example.com; 75 76 # reverse proxy 77 location /sub/ { 78 proxy_pass http://xxx.xxx.xxx.xxx/sub/; 79 } 80 81 location / { 82 ssi on; 83 ssi_last_modified on; 84 try_files $uri $uri/ @wordpress; 85 } 86 87 location ~ /wp-login.php.* { 88 fastcgi_pass 127.0.0.1:9000; 89 fastcgi_index index.php; 90 fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 91 include fastcgi_params; 92 } 93 94 location ~ .php$ { 95 try_files $uri @wordpress; 96 fastcgi_index index.php; 97 fastcgi_split_path_info ^(.+.php)(.*)$; 98 fastcgi_pass 127.0.0.1:9000; 99 fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 100 include fastcgi_params; 101 } 102 103 location @wordpress { 104 fastcgi_index index.php; 105 fastcgi_split_path_info ^(.+.php)(.*)$; 106 fastcgi_pass 127.0.0.1:9000; 107 fastcgi_param SCRIPT_FILENAME /var/www/html/example/index.php; 108 include fastcgi_params; 109 } 110} 111

現状、上記ののような設定を行っておりまして、https://example.com/sub にアクセスすると、http://example.com/sub が表示されます。

#proxy_pass http://xxx.xxx.xxx.xxx/sub; proxy_pass http://xxx.xxx.xxx.xxx/sub2;

不可解なのが、上記のように変更しても接続先が変更されず、locationの優先順位などが間違っているのかと思いましたが、さっぱりわかりません。
当方インフラに詳しくないため、どなたかわかるようであれば詳しく教えていただけると助かります。

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

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

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

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

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

guest

回答1

0

上記のように変更しても接続先が変更されず、locationの優先順位などが間違っているのかと思いましたが、さっぱりわかりません。

listen 80, listen 443server { } が複数設定されているので、まずはそこを修正するといいと思います。

  • 1つ目(return 301)の server を削除
  • 2つ目(listen 443 default_server;)の server に server_name example.com; を追加
  • 3つ目(listen 80;)の server に server_name example.com; を追加

設定を修正したら、nginx -t で書式チェックを行なうといいと思います。

投稿2020/01/25 15:57

TaichiYanagiya

総合スコア12146

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

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

sasaki_nuno

2020/03/17 04:52 編集

コメントいただきありがとうございます!^^ 1つ目のserverはまるっと削除し、 ``` #server { # listen 80; # listen 443; # server_name example.com; # return 301 https://example.com$request_uri; #} ``` 443 と 80 の server に server_name を追加しましたがダメでした。 ``` server { listen 443 default_server; server_name example.com; } ``` httpであれば正常にアクセスできますが、httpsにすると以下のようにブラウザがエラーとなります。 ``` このページは動作していません example.com でリダイレクトが繰り返し行われました。 Cookie を消去してみてください. ERR_TOO_MANY_REDIRECTS ``` error.logなどみましたが、特に出力はされていませんでした。 あと何か気になることはありませんでしょうか? ※ いただいたコメントを元に、お題のconfファイルの内容も現場と同じものに更新しました。
TaichiYanagiya

2020/01/29 08:54

サーバーB で http→https のリダイレクト設定になっているのではないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問