我对 apache 还不熟悉,对反向代理更是一窍不通,但我最终安装了一台带有 nginx(作为反向代理)和 apache 的服务器,以管理使用不同技术的网站。php 网站(下面称为 php_site)由 apache 处理,ruby on rails 网站由 nginx 处理。以后应该会添加更多网站。除了 phpmyadmin 之外,一切都运行良好。
我的问题:我可以进入 phpmyadmin 登录页面(通过www.php_site.org/phpmyadmin/
或xx.xx.xx.xxx:8080/phpmyadmin/
,xx 是我的服务器外部 IP),但我无法登录。我很确定我有良好的凭证,但是当我提交表单时,phpmyadmin 登录页面只是重新加载,而不显示错误。
我的信心:
- Ubuntu 16.04
- php 5.6(因为旧项目需要它)
- phpmyadmin 4.5.4.1
- mysql 5.7.17
- 阿帕奇/2.4.18
phpmyadmin 安装在/usr/share/phpmyadmin/
。
Nginx 配置(php_site):
# /opt/nginx/conf/conf.d/php_site.conf
server {
listen 80;
server_name www.php_site.org;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /phpmyadmin {
proxy_pass http://127.0.0.1:8080/phpmyadmin;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
client_max_body_size 15M;
}
server {
listen 80;
server_name php_site.org;
rewrite ^ http://www.php_site.org$request_uri? permanent;
}
Apache 配置(php_site):
# /etc/apache2/sites-available/php_site.conf
NameVirtualHost *:8080
<VirtualHost *:8080>
ServerName www.php_site.org
ServerAdmin [email protected]
DocumentRoot /var/www/php_site.com/htdocs
<Directory /var/www/php_site.com/htdocs >
AllowOverride All
DirectoryIndex index.php
</Directory>
ErrorLog /var/log/apache2/php_site-error.log
LogLevel warn
CustomLog /var/log/apache2/php_site.log combined
</VirtualHost>
<VirtualHost *:8080>
ServerName php_site.org
Redirect permanent / http://www.php_site.org/
</VirtualHost>
问题 :
- 我的配置有问题吗?
- 我需要设置吗
$cfg['PmaAbsoluteUri']
?/etc/phpmyadmin/config.inc.php
如果需要,正确的值是多少?(参见https://docs.phpmyadmin.net/en/latest/faq.html#faq4-7)(我试了很多次,但都没有成功) - 如果我没有使用 proxy_pass php_my_admin 会不会更好?(而是设法做类似的事情http://www.jaredlog.com/?p=2117,即使我的配置不同?)
如果需要的话,请随时询问更多信息。
答案1
好吧,这是我的经典而又荒谬的谜团。
该问题实际上源于配置文件的旧更改。
我是怎么到那里的:亚历克斯建议,我更仔细地检查了我的日志/var/log/apache2/php_site-error.log
,并在尝试连接时看到以下错误:
PHP Warning: Unknown: POST Content-Length of 122 bytes exceeds the limit of 20 bytes in Unknown on line 0.
这让我想起/etc/php/5.6/apache2/php.ini
几天前我曾做过一个修改,更新了上传文件大小。从那天起似乎没有出现任何错误,所以我没有怀疑这个修改。
在 中php.ini
,我注意到:post_max_size = 15
。缺少“M”。一旦我更改为post_max_size = 15M
并重新启动 apache,登录问题就解决了。