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

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

ただいまの
回答率

90.51%

  • WordPress

    8942questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • nginx

    1035questions

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

nginxを設定したもののサブディレクトリのwordpressが動作してくれない。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 366

Otazoman

score 29

 前提・実現したいこと

既存サイトからの移行で「/hoge/hoge/wp」という様にルートディレクトリ
から2階層下でwordpressのページを動作させ、2階層目のhogeでは静的ページを
運用したいと考えております。

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

該当のサイトから/hoge/hoge全体をコピーし、wordpressのデータベース
全体についてもコピーしました。静的サイト全体についても無事に
表示はできている状態です。しかしながらwordpressのサイトにアクセス
しようとすると下記の様にPHPのソースがそのまま表示されてしまいます。

色々と試してみましたが八方手ふさがりなのでご助力をお願いいたします。

・サイトのURLイメージ
「https://mysite.example.com/hoge/wp」

・画面
イメージ説明

 該当のソースコード

/etc/nginx/conf.d/local.conf

upstream phpfpm71{
  server unix:/var/run/php/php7.1-fpm.sock;
}

server {
        listen 80; # httpへのアクセスをhttpsへリダイレクトする
        listen [::]:80;
        server_name 192.168.1.1;
        if ($http_x_forwarded_proto != https) {
            return 301 https://$host$request_uri;
        }
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    ssl on;
    server_name 192.168.1.1;
    root   /var/www/html;
    #root   /var/www;
    index  index.html index.htm index.php;
    auth_basic           "closed site";
    auth_basic_user_file "/etc/nginx/auth/.htpassword";

    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_session_timeout 5m;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;

    location ~*/hoge {
             ssi on;
             ssi_last_modified on;
    }
    location  /hoge/wp {
            root /var/www/html/hoge/wp;
            try_files $uri $uri/ @wordpress;
            index index.php index.html index.htm;
            location ~* /wp-config.php {
                     deny all;
             }
    }
    location ~ \.php$ {
        try_files $uri $uri @wordpress;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   phpfpm71;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
    location @wordpress {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   phpfpm71;
        include       fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root/index.php;
    }
}

 試したこと

nginx.confはデフォルトのままいじっていません。

「root   /var/www/html」の箇所を「/var/www」に変更し
その配下にwordpressを展開した際には正常に動作しました。

 補足情報(FW/ツールのバージョンなど)

  • ubuntu18.04.1
  • nginx version: nginx/1.14.0 (Ubuntu)
  • PHP 7.1.20-1
  • PHP-fpm 7.1
  • mysql  Ver 15.1 Distrib 10.1.34-MariaDB

nginxのログには以下のような感じで出力されています。

XXX.XX.XXX.XX - adm [15/Sep/2018:17:09:47 +0900] "GET /hoge/wp/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134"


該当時間帯にerror.log側ではエラーの出力はありませんでした。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2018/09/15 17:06

    nginx のログには、何か出ていますか?

    キャンセル

回答 1

check解決した方法

0

色々と調べて何とか自己解決できました。

fastcgi_param  SCRIPT_FILENAME

がミソだったようです
https://qiita.com/kotarella1110/items/f1ad0bb40b84567cea66

正しく理解できていないかもしれませんが、下記の記述で意図した操作はできました。
体系立てて理解していかないと何とか動いたレベルになってしまうので、書籍を購入して
必死に読み解いていくことにします。

upstream phpfpm71{
  server unix:/var/run/php/php7.1-fpm.sock;
}
server {
        listen 80;
        listen [::]:80;
        server_name 192.168.1.1;
        if ($http_x_forwarded_proto != https) {
            return 301 https://$host$request_uri;
        }
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    ssl on;
    server_name 192.168.1.1;
    root   /var/www/html;
    index  index.html index.htm index.php;
    auth_basic           "closed site";
    auth_basic_user_file "/etc/nginx/auth/.htpassword";

    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_session_timeout 5m;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;

    location / {
             ssi on;
             ssi_last_modified on;
             try_files $uri $uri/ index.html index.php;
    }
    location ~* /wp-config.php {
             deny all;
     }
    location  ^~/wp {
            root /var/www/html/hoge/wp;
            index index.php index.html index.htm;
            try_files $uri $uri/ @wordpress;
    }
    location ~ \.php$ {
        try_files $uri $uri @wordpress;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   phpfpm71;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
    }
    location @wordpress {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   phpfpm71;
        include       fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root/hoge/wp/index.php;
    }
    error_page 404 /404.html;
    location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • WordPress

    8942questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • nginx

    1035questions

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