我在 httpd.conf 上启用了以下内容:
扩展状态开启
加载模块 status_module 模块/mod_status.so
并且:
名称虚拟主机 *:80
<VirtualHost *:80>
ServerName myserver.com
ServerAlias myserver.com
DocumentRoot /prod/html
RewriteEngine on
RewriteCond %{HTTP_HOST} .*myserver.com$
RewriteRule /(.*) http://myserver.com/$1 [R,L]
**<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>**
</VirtualHost>
跑步时lynx http://localhost/server-status
收到以下消息:
您无权访问此服务器上的 /server-status。
我在 /etc/httpd 文件夹中看不到任何与 /server-status 相关的内容,这些是我在 /etc/httpd 下的文件夹:
**conf
conf.d
logs -> ../../var/log/httpd
modules -> ../../usr/lib/httpd/modules
run -> ../../var/run**
知道为什么我会得到“没有权限”错误?我需要安装另一个包才能获取它吗?谢谢!!Dotan。
答案1
尝试使用 IP 而不是主机名,这是我的主机名(::1 在那里,因为服务器也启用了 IPv6)
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1 ::1
</Location>
使用
lynx http://localhost/server-status
可能与虚拟主机“myserver.com”不匹配,因此您可以尝试将 Location /server-status 放在 http.conf 中的 VirtualHost 之外
答案2
万一这对某人有帮助:
在较新版本的 Apache 中,有一个默认的服务器状态配置设置conf/extra/httpd-info.conf这将覆盖任何服务器状态设置 httpd配置文件
conf/extra/httpd-info.conf 中的默认配置设置为“允许来自 .example.com”,并将消除你在 httpd.conf 中所做的所有花哨的服务器状态更改
因此,如果您遇到权限问题,请确保您正在编辑正确的文件!
答案3
你可能想看看你的/etc/hosts
127.0.0.1 localhost
答案4
当我尝试启用在 Kubernetes 中运行的 Apache Web 服务器的状态页面时,我遇到了类似的问题。
这是我一直在处理的图像:registry.k8s.io/hpa-example
,配备有Apache/2.4.10 (Debian) PHP/5.6.14
。
解决方案
我只是创建了一个自定义配置文件(/etc/apache2/conf-enabled/my-custom-config.conf
),其中包含以下内容
<Location "/server-status">
SetHandler server-status
Require all granted
</Location>
并将其作为 Volume 传递给 Pod。笔记:此配置不适用于生产环境,因为 Apache 将允许任何调用者查看状态页面。这对于我的测试目的来说没问题。
这是我最终使用的部署 yaml:
apiVersion: v1
kind: ConfigMap
metadata:
name: apache-config
data:
my-custom-config.conf: |
<Location "/server-status">
SetHandler server-status
Require all granted
</Location>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: registry.k8s.io/hpa-example
volumeMounts:
- name: apache-config
mountPath: /etc/apache2/conf-enabled/
ports:
- containerPort: 80
volumes:
- name: apache-config
configMap:
name: apache-config
---
apiVersion: v1
kind: Service
metadata:
name: php-apache
labels:
run: php-apache
spec:
ports:
- port: 80
selector:
run: php-apache
这就是我运行服务器的方式:
kubectl apply -f <path_to_the_deployment_yaml>
这是我测试状态页面的方式:
kubectl run -i --tty test-pod --rm --image=busybox:1.28 \
--restart=Never -- /bin/sh -c "wget -O- http://php-apache/server-status"