Apache2静态文件报“Access denied”小记

apache2提示“Access denied”,状态码404,第一反应是apache2的用户www-data对文件没有权限,但是奇怪的是,对于接口访问(php)确是OK的,所有的资源文件都访问不了,查了以下,是有读权限的,查了站点下的error.log:

[Thu Apr 09 14:33:55.072565 2020] [proxy_fcgi:error] [pid 23:tid 140714637768448] [client 172.18.0.1:49334] AH01071: Got error 'Access to the script '/var/www/xxx/public/logo.png' has been denied (see security.limit_extensions)\n'

注意关键点:proxy_fcgi:error`,我想,访问资源文件跟fcgi有什么关系呢?那我是不是有可能把所有的请求都转发给php了呢?

继续检查apache配置文件,终于发现:

    <FilesMatch .*$>
        SetHandler "proxy:fcgi://php72:9000"
    </FilesMatch>

有问题!

果然所有的请求都会转发到php去了!遂按照示例配置改成如下:

    <FilesMatch \.(cgi|shtml|phtml|php)$>
        SetHandler "proxy:fcgi://php72:9000"
    </FilesMatch>

重启 apache:docker-compose restart apache2,问题解决!

CURL直接访问ES的示例

访问:

curl -X POST http://es-svc-dev:9200/devorders/order/_search?pretty --header 'Content-Type: application/json' --data "@/root/data.json"

下面是data.json文件的内容:

{
    "size": 0,
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "batchid": 4868
                    }
                }
            ]
        }
    },
    "aggs": {
         "group_by_batchid": {
                "terms": {
                        "field": "batchid",
                        "size": "1000000"
                },
                "aggs": {
                        "group_by_status": {
                                "terms": {
                                        "field": "status"
                                }
                        }
                }
         }
    }
}

在容器中使用宿主机的代理

今天打算使用symfony来创作自己的新项目,但是由于网络的关系下载速度实在太慢了,于是在容器中使用以下方式使用代理,速度起飞。

export https_proxy=https://host.docker.internal:1081/
export http_proxy=http://host.docker.internal:1081/
curl -I google.com # 访问测试
# 检查是否设置好
➔ echo $http_proxy
http://localhost:1081/

➔ echo $https_proxy
https://localhost:1081/

# 取消代理
unset https_proxy
unset http_proxy

另外,在宿主机下的方式类似:

export https_proxy=https://localhost:1081/
export http_proxy=http://localhost:1081/
curl -I google.com # 访问测试