私はこれを何時間も働かせようとしている!
シンプルなウェブサーバーをセットアップしたいのですが。私のWebファイルは/var/www
にあります。また、phpmyadminも必要です。ディレクトリ/var/phpmyadmin
を作成しました。今、私は標準的な方法で通常のウェブファイルにアクセスしたいと思います。
例:ファイル/var/www/test.php
はhttp://localhost/test.php
でアクセスできる必要があります。
phpmyadminの部分は次のようにする必要があります:http://localhost/phpmyadmin
。以下の設定で404を取得します。また、次のURLを使用します:http://localhost/phpmyadmin/index.php
このため、nginxのsites-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はまだ機能しません!
目標は、「通常の」WebファイルをphpMyAdminインストールから完全に分離することです。
Nginxの各サーバー構成は1つのWebrootしか持つことができない(そして持つ必要がある)ことを強調しておく必要があります。そうは言っても、これらはあなたのオプションです:
PhpMyAdminを、Webルートの下のディレクトリ(この場合は/var/www/phpmyadmin
)にインストールします。 http://localhost/phpmyadmin
からアクセスできます
これは最も単純な構成であり、完全を期すためにここに含めています(検索エンジンからここに来る人も)。
PhpMyAdminをウェブルート外のディレクトリにインストールしてから、そのディレクトリを指すphpmyadmin
という名前のシンボリックリンクをウェブルートに作成します。その場合は、サーバー構成でdisable_symlinks off
を指定したことを確認する必要があります。
異なるポートでリッスンし、異なるWebルートを持ち、proxy_passディレクティブを介して通信する2つのサーバー構成を作成することにより、同じvhostで分離を実現できます。このような構成の基本的な概要は次のとおりです。
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へのすべてのリクエストは、ポート80でリッスンしているサーバーインスタンスの/phpmyadmin
ロケーションを介して、ポート8080でリッスンしているサーバーインスタンスに透過的に渡されます。
最後に、同じポートでリッスンするが、server_name
ディレクティブとroot
の場所が異なる2つのサーバー構成を作成することで、異なるvhostで分離を実現できます。たとえば、次のような基本的なアウトライン:
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
を介してファイルにアクセスし、http://phpmyadmin.local
を介してphpMyAdminインスタンスにアクセスできます。明らかに、ローカルワークステーションから。