Seb*_*eld 5 php nginx alias fastcgi
最近我一直在尝试使用 Nginx(我通常使用 Apache)来设置 Web 服务器。但是,我在尝试将 phpMyAdmin 设置为alias 时遇到了问题。别名也正确地带您进入 phpMyAdmin 登录屏幕,但是当您输入有效凭据并点击开始时,您最终会返回登录屏幕而没有错误。
对我来说听起来像是 cookie 或会话问题......但是如果我符号链接 phpMyAdmin 目录并尝试通过符号链接版本登录它工作正常!符号链接和别名都设置了相同数量的 cookie,并且两者似乎都为正确的域和路径设置了 cookie。
我的 php 别名的 Nginx 配置如下:
location ~ ^/phpmyadmin/(.*\.php)$ {
alias /usr/share/phpMyAdmin/$1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
Run Code Online (Sandbox Code Playgroud)
有没有其他人经历过这种行为?任何人都对如何解决它有任何想法?
我有同样的问题。我运行了一个带有 doc root 的网站,/var/www/somesite并希望将 phpmyadmin 连接到该网站上的某个子文件夹。我在 nginx 中用这个配置试过这个:
root /var/www/somesite;
location /pma/ {
alias /usr/share/phpmyadmin/;
}
location ~ ^/pma/(.+\.php)$ {
alias /usr/share/phpmyadmin/$1;
fastcgi_pass unix:/tmp/phpfpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效,除了当我登录时,就像你描述的那样,我又看到了首页。没有错误,什么都没有。如果我使用错误的密码登录,我会收到“无法登录 MySQL 服务器”的错误消息,正如您所期望的那样。
解决方案
最后,我所做的是我拖入了所有内容fastcgi_params,发现更改DOCUMENT_ROOT-parameter 可以解决此问题。所以上面的 nginx-config 改为:
root /var/www/somesite;
location /pma/ {
alias /usr/share/phpmyadmin/;
}
location ~ ^/pma/(.+\.php)$ {
alias /usr/share/phpmyadmin/$1;
fastcgi_pass unix:/tmp/phpfpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
# From fastcgi_params
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /usr/share/phpmyadmin; # <-- Changed
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;
}
Run Code Online (Sandbox Code Playgroud)
(旁注:我认为这是 nginx 的一个问题,你不能同时设置别名和文档根。实际上很奇怪。)
| 归档时间: |
|
| 查看次数: |
17722 次 |
| 最近记录: |