我正在尝试用密码保护 Nginx 服务器上的所有端口 8081。此端口的唯一用途是 PhpMyAdmin。当我导航到https://www.example.com:8081,我成功获取了默认的 Nginx 欢迎页面。但是,当我尝试导航到 PhpMyAdmin 目录时,https://www.example.com:8081/phpmyadmin,我收到“404 Not Found”页面。
我的 htpasswd 文件的权限设置为 644。
这是我的服务器块的代码:
server {
listen 8081;
server_name example.com www.example.com;
root /usr/share/phpmyadmin;
auth_basic "Restricted Area";
auth_basic_user_file htpasswd;
}
我也尝试过完全注释掉#root /usr/share/phpmyadmin;但是,没有任何区别。
我的问题是否仅限于使用错误的根路径?如果是这样,我如何找到 PhpMyAdmin 的根路径?
如果有任何区别,我正在使用带有 Nginx 1.4.6 和 ISPConfig 3.0.5.4p3 的 Ubuntu 14.04.1 LTS。
答案1
此服务器未启用 SSL。请尝试http://www.example.com:8081/
要使 SSL 正常工作,您需要以下内容:
listen 8081 ssl;
ssl_certificate /path/to/your.crt;
ssl_certificate_key /path/to/your.key;
error_page 497 https://$host:$server_port$request_uri;
错误页面行将重定向 http://... 到 https://...
编辑:这是一个适合我的完整服务器块——在看到包含 PHP 块的答案之前,我开始测试它:)
server {
listen 8081 ssl;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
error_page 497 https://$host:$server_port$request_uri;
server_name example.com www.example.com;
root /usr/share/phpmyadmin;
location / {
auth_basic "Restricted Area";
auth_basic_user_file htpasswd;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
}
答案2
谢谢马塞加洛对于以下解决方案:
解决方案是添加 php-fpm 部分,如下所示:
server {
listen 8081;
server_name example.com www.example.com;
root /usr/share/phpmyadmin;
location / {
auth_basic "Restricted Area";
auth_basic_user_file htpasswd;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web11.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
}