編集する:

編集する:

私は何時間もそれを動作させようとしてきました!

簡単なWebサーバーを構築したいです。私のネットワークファイルは/var/wwwphpmyadminになければなりません。ディレクトリを作成しました/var/phpmyadmin。では、標準的な方法で一般的なWebファイルにアクセスしたいと思います。
例:ファイルは.phpmyadminセクションを/var/www/test.php介してアクセスできる必要があり、次のようになります。以下の設定では、404が表示されます。そしてこのURLは:http://localhost/test.php
http://localhost/phpmyadminhttp://localhost/phpmyadmin/index.php

これを行うには、nginxのsite-availbleフォルダに次のファイルを作成しました。

server {
  listen 80; ## listen for ipv4; this line is default and implied
  listen [::]:80 default_server ipv6only=on; ## listen for ipv6

  root /var/www;
  index index.html index.htm index.php;

  try_files $uri $uri/ $uri/index.html $uri/index.htm $uri/index.php;

  # This didn't work
  location /phpmyadmin/ {
     alias /var/phpmyadmin;
  }

  # And this did neither. (Never used both at the same time!)
  location /phpmyadmin/ {
     root /var;
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    # With php5-cgi alone:
    #fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
  }

  location ~ /\.ht {
    deny all;
  }
}

私は何が間違っていましたか?

編集する:

興味深いことに、これは機能します(ルート(http://localhost)に有効です)。

  root /var/www/htdocs;

  index index.php index.html index.htm;

  location /phpmyadmin/ {
    root /var/www/phpmyadmin;
  }

そしてこれはそうではありません:

  index index.php index.html index.htm;

  location / {
    root /var/www/htdocs;
  }

  location /phpmyadmin/ {
    root /var/www/phpmyadmin;
  }

phpmyadminはまだ動作していません!

答え1

あなたの目標は、phpMyAdminインストールから「一般」Webファイルを完全に分離することです。

Nginxの各サーバー構成には、Webルートが1つしか存在できないことを強調する必要があります。つまり、次のオプションがあります。

  • あなたの場合は、Webルートの下のディレクトリにphpMyAdminをインストールしてください/var/www/phpmyadminhttp://localhost/phpmyadmin

    これは最も簡単な構成で、完全性のために(そして検索エンジンユーザーのために)ここに含まれています。

  • webroot外部ディレクトリにphpMyAdminをインストールし、phpmyadminそのディレクトリを指すwebrootという名前のシンボリックリンクを作成します。この場合は、disable_symlinks offサーバー構成で指定されていることを確認する必要があります。

  • 異なるポート、異なるWebルートを使用して受信し、Proxy_passディレクティブを介して通信する2つのサーバー構成を作成することで、同じ仮想ホストで分離を達成できます。この構成の基本的な概要は次のとおりです。

    server {
        listen   80;
        server_name localhost;
        root /var/www/htdocs;
        index index.php index.html index.htm;
    
        location /phpmyadmin {
            proxy_pass http://127.0.0.1:8080/;
        }
    
        # ...Add more location directives, php support, etc...
    }
    
    server {
        listen 8080;
        server_name localhost;
        root /var/www/phpmyadmin;
        index index.php index.html index.htm;
    
        # ...Specify additional location directives, php support, etc...
    }
    

    /phpmyadminこの場合、phpMyAdminへのすべての要求はポート80でリッスンするサーバーインスタンスを介してポート8080でリッスンするサーバーインスタンスに透過的に転送されます。

  • server_name最後に、同じポートでリッスンしているがディレクティブと場所がroot異なる2つのサーバー構成を作成して、異なる仮想ホストを分離できます。たとえば、次の基本的な概要があります。

    server {
        listen   80;
        server_name dev.local;
        root /var/www/htdocs;
        index index.php index.html index.htm;
    
        # ...Add more location directives, php support, etc...
    }
    
    server {
        listen   80;
        server_name phpmyadmin.local;
        root /var/www/phpmyadmin;
        index index.php index.html index.htm;
    
        # ...Specify additional location directives, php support, etc...
    }
    

その後、次の項目を追加して続行できます/etc/hosts

127.0.0.1    dev.local
127.0.0.1    phpmyadmin.local

http://dev.localその後、phpMyAdminインスタンスを介してファイルにアクセスできますhttp://phpmyadmin.local。もちろん、ローカルワークステーションではそうです。

関連情報