所以这是我的服务器块
server {
listen 80;
server_name domain.tld;
root /var/www/domain.tld/html;
index index.php index.html index.htm;
location / {
}
location /phpmyadmin {
alias /var/www/phpmyadmin;
}
location /nginx_status {
stub_status on;
access_log off;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
浏览http://domain.tld/index.php正常工作我遇到的唯一问题就是浏览http://domain.tld/phpmyadmin/。它返回404但服务器上存在文件夹/ var / www / phpmyadmin。查看/var/log/nginx/error.log,在那里没有记录任何错误,但是对它的访问记录在/var/log/nginx/access.log中。这可能是什么问题?
答案 0 :(得分:3)
问题是phpmyadmin是一个PHP应用程序,而你的location ~ \.php$
块没有指向正确的文档根目录。
您需要构建两个具有不同文档根的PHP位置。
如果phpmyadmin位于/var/www/phpmyadmin
,则不需要alias
指令,因为root
指令会更有效。请参阅this document。
server {
listen 80;
server_name domain.tld;
root /var/www/domain.tld/html;
index index.php index.html index.htm;
location / {
}
location /nginx_status {
stub_status on;
access_log off;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ^~ /phpmyadmin {
root /var/www;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
location ^~ /phpmyadmin
是一个前缀位置,优先于通常用于处理.php
文件的正则表达式位置。它包含一个location ~ \.php$
块,它为文档根继承了/var/www
的值。
在定义其他include fastcgi_params
参数之前建议您fastcgi_param
,否则您的自定义值可能会被静默覆盖。
有关详情,请参阅this document。