2017-02-03 7 views
0

私は、完全スタックNginxリバースプロキシサーバ(タイトルが明らかにしているように)をセットアップしようとしています。これは、PHP- FPM。ここでフルスタックNginxリバースプロキシとPHPインデックス

は(直接ファイルを提供するために使用されるのではなく、バックエンドサーバに向けてクライアントをリダイレクトするために)プロキシ・プロセスのいわゆるフロントエンドの一部です:

 server { 
      listen xxx.xxx.xxx.xxx:80; 
      server_name localhost; 

      # logs... 

      # Here begins the reverse-proxying 

      # Test 2nd backend server 
      location /test { 
        proxy_pass http://127.0.0.1:82/; 
      } 

      # default main site (has to be at the end since location checks file hierarchy) 
      location/{ 
        proxy_pass http://127.0.0.1:81/; 
      } 

そして、次に、2つの逆のサーバーブロックがあります。

server { 
      listen 127.0.0.1:81; 
      server_name main; 

      # logs... 

      root /var/www/main; 

      gzip on; 
      gzip_types "*"; 
      expires 10m; 

      location/{ 
        try_files $uri = 404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        fastcgi_pass unix:/run/php-fpm.socket; 
        include /etc/nginx/fastcgi.conf; 
      } 
    } 

そしてここでは、第二の「テスト」一つであり、domain.com/testにしようとしたときにアクセスする必要がありますされています 最初のものは、domain.comにアクセスすることで、デフォルトで提供されなければならない主要なサイトです。これは、私が実際に一つだけのポートを使用することができるようになるリバースプロキシを使用してそう

 server { 
      listen 127.0.0.1:82; 
      server_name test; 

      root /var/www/test; 

      gzip on; 
      gzip_types "*"; 
      expires 10m; 

        try_files $uri = 404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        fastcgi_pass unix:/run/php-fpm.socket; 
        include /etc/nginx/fastcgi.conf; 
      } 
    } 

、そして最も重要なのは、それは仮想サーバが実際にここで実行されているどのくらいの非表示になります。

だから何が問題なのですか? これは、逆引きプロキシ自体よりも、nginxリバースプロキシによってPHPとインデックスが管理されているかどうかです。

index.htmlファイルを81と82の両方のサーバーで使用している場合、インデックス・ディレクティブは正常に動作し、ドメインにアクセスするとサーバーは/var/www/main/index.htmlを返します。 com、/var/www/test/index.htmlにアクセスしてください。

ただし、index.phpファイルを使用しているときに問題が発生します。この場合、上のURLのみを使用すると、どちらの場合も404エラーが表示されます。明示的にURLにindex.phpを指定する必要があります。 domain.com/test/index.phpを動作させるには、これは必要ありません。

このような特定のケースを扱っているスレッドやドキュメントが見つかりませんでした。そのため、PHPでインデックスの動作に関する情報を誰かが持っているかどうか尋ねるためにここに来ています。

私はこの問題でかなり長い間苦労してきたので、あなたの答えを事前にお越しいただき、ありがとうございます。

答えて

0

あなたは、デフォルトでのindex.phpファイルをロードするためにこれを設定する必要があります。

location/{ 
    index index.php index.html index.htm; 
    // ...other configurations 
} 
+0

私は明らかに誤ってそれを置くことを忘れてしまったが、私はそれを持っていた:81サーバブロック、およびそれが動作しないでしょう。 私はそれを場所/ {}ブロックに入れようとしましたが、どちらも機能していません...私はこれについて少し困惑しています。 編集:実際には、フロントエンドサーバーの場所/ {}を含めて、動作させることなく多くの場所に配置しようとしました。 –

関連する問題