我在 Docker 上运行 nginx 和 php-fpm。当使用我的 Docker 系统的主机名 (docker1.freekb.net) 时,phpinfo.php 页面会显示在浏览器中,因此我知道我已经正确配置了 nginx 和 php-fpm 以提供 PHP 页面。这是 /etc/nginx/conf.d/default.conf 中的服务器块。来自 nginx 的 80 端口的请求被转发到 PHP 的 9000 端口。
server {
listen 80;
server_name stage.freekb.net;
root /var/www/stage;
index index.html phpinfo.php;
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 0.0.0.0:9000;
fastcgi_index phpinfo.php;
include fastcgi_params;
}
}
我有 HAProxy 设置以将请求转发到 nginx。这是我在 /etc/haproxy/haproxy.cfg 中的监听块。当我访问http://haproxy.freekb.net/index.html时,会显示 nginx 欢迎页面,因此我知道 HAProxy 能够将请求转发到 nginx。
但是,当我访问http://haproxy.freekb.net/phpinfo.php时,phpinfo.php 会下载到我的本地 PC。我怀疑这意味着 fastcgi 有问题。我不确定在使用 HAProxy 时要在浏览器中显示 PHP 页面需要进行哪些更改。
listen nginx
bind *:80
mode tcp
balance roundrobin
server nginx1 docker1.freekb.net:80 check