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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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、上で動作します。

Linux

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Q&A

解決済

1回答

3369閲覧

apacheとnginxの共存について

DaichiYasuda

総合スコア173

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、上で動作します。

Linux

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

0グッド

0クリップ

投稿2017/04/15 15:18

前の質問の続き
https://teratail.com/questions/72578

nginx

1server { 2listen 80; 3server_name daichan.club; 4return 301 https://$host$request_uri; 5 6proxy_set_header Host $http_host; 7proxy_set_header X-Forwarded-Proto $scheme; 8 9location / { 10proxy_pass http://127.0.0.1:8080; 11} 12} 13server { 14listen 443; 15server_name daichan.club; 16access_log off; 17 18ssl on; 19ssl_certificate /etc/letsencrypt/live/daichan.club/cert.pem; 20ssl_certificate_key /etc/letsencrypt/live/daichan.club/privkey.pem; 21ssl_session_timeout 5m; 22ssl_protocols SSLv2 SSLv3 TLSv1; 23ssl_ciphers HIGH:!aNULL:!MD5; 24ssl_prefer_server_ciphers on; 25 26location / { 27proxy_redirect off; 28proxy_set_header Host $host; 29proxy_set_header X-Real-IP $remote_addr; 30proxy_set_header X-Forwarded-Proto https; 31proxy_set_header X-Forwarded-Host $host; 32proxy_set_header X-Forwarded-Server $host; 33proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 34proxy_pass http://127.0.0.1:8080/; 35} 36}

上記の設定でhttpsへのリダイレクトはできましたが、保護されていない通信となってしまいます。

どこに原因ありますでしょうか??

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

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

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

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

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

guest

回答1

0

ベストアンサー

設定ファイルに記述されていたドメインを確認してみたところページ自体は正常に TLS で通信できていることが確認できました。問題点は、ページ内に http:// なリソースが混在しているせいです。リダイレクトには関係なく非 TLS なリソースが含まれているページは「保護されていない通信」として扱われます。たとえば Chrome のデベロッパーツールなどで Console の箇所を確認してみてください。

今までは Apache が HTTPS であることを認識できていたため、その上で動作する PHP にも HTTPS であるという設定が伝えられていましたが、nginx のバックエンドで動作するように設定を変えたために Apache が HTTPS であることを認識できず、WordPress で https:// として動作する設定がうまくいっていないようです。

まず、解決に直接関係ないと思いますが 80 番はバックエンドに渡される必要がないようなので proxy_pass は削除しておきましょう。

PHP で $_SERVER の値を確認して TLS 通信として理解されているか確認してみてください。

php

1<?php 2var_dump($_SERVER);

投稿2017/04/15 15:50

chitoku

総合スコア1610

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

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

DaichiYasuda

2017/04/15 15:53

wp-config.phpに下記を追記したら動きました! if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") { $_SERVER['HTTPS'] = 'on'; } define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true); ありがとうございました!!
chitoku

2017/04/15 16:00

あー、それで解決した場合は nginx の 443 の方に proxy_set_header HTTPS on を追加する方が綺麗かもしれないですねー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問