Bra*_*one 7 debian configuration webserver nginx phpmyadmin
我一直试图让它工作几个小时!
我想建立一个简单的网络服务器。我的网络文件应在/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;
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
有趣的是,这是有效的(根目录有效(http://localhost)):
root /var/www/htdocs;
index index.php index.html index.htm;
location /phpmyadmin/ {
root /var/www/phpmyadmin;
}
Run Code Online (Sandbox Code Playgroud)
而这不会:
index index.php index.html index.htm;
location / {
root /var/www/htdocs;
}
location /phpmyadmin/ {
root /var/www/phpmyadmin;
}
Run Code Online (Sandbox Code Playgroud)
phpmyadmin 还是不行!
dka*_*dis 10
您的目标是将您的“常规”网络文件与您的 phpMyAdmin 安装完全分开。
需要强调的是,Nginx 中的每个服务器配置可以(并且应该)只有一个 webroot。话虽如此,这些是您的选择:
将 phpMyAdmin 安装在您的 webroot 下的目录中,在您的情况下是/var/www/phpmyadmin. 它可以通过http://localhost/phpmyadmin
这是最简单的配置,为了完整起见,我将其包含在此处(以及来自搜索引擎的人们)。
将 phpMyAdmin 安装在您的 webroot 之外的目录中,然后phpmyadmin在您的 webroot 中创建一个指向该目录的符号链接。在这种情况下,您需要确保已disable_symlinks off在服务器配置中指定。
您可以通过创建 2 个侦听不同端口、具有不同 webroot 并通过 proxy_pass 指令进行通信的服务器配置来实现在同一虚拟主机上的分离。这种配置的基本概要如下:
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...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,所有对 phpMyAdmin 的请求都将通过/phpmyadmin侦听端口 80 的服务器实例中的位置透明地传递给侦听端口 8080的服务器实例。
最后,您可以通过创建 2 个侦听同一端口但具有不同server_name指令和不同root位置的服务器配置来实现不同虚拟主机的分离。例如,这样的基本大纲:
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...
}
Run Code Online (Sandbox Code Playgroud)然后,您将继续将以下条目添加到您的/etc/hosts:
127.0.0.1 dev.local
127.0.0.1 phpmyadmin.local
Run Code Online (Sandbox Code Playgroud)
然后您可以通过http://dev.local.phpMyAdmin 实例访问您的文件http://phpmyadmin.local。显然,来自您的本地工作站。
| 归档时间: |
|
| 查看次数: |
36778 次 |
| 最近记录: |