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