我尝试使用 Apache 服务器 2.4.6 和 headers_module 设置带有环境变量**的自定义 HTTP 标头。
我在端口 80 上的 HTTP VHost 中工作。
一切都按预期进行,基本示例如下:
Header set MyHeader "%D %t"
我已阅读 mod_headers 的 Apache 文档:https://httpd.apache.org/docs/2.4/en/mod/mod_headers.html#header
据说可以使用以下方式访问环境变量
%{ENVVARNAME}e
(ENVVARNAME 是 ENV 变量的名称)
我还阅读了其他帖子,但没有真正有效的答案: Apache set custom header with an environment variable
但我的问题是添加一个标头而不是像 HOSTNAME 环境值那样标识我的 Apache 服务器
Header Set X-Serv %{HOSTNAME}e
不成功:始终显示 X-Serv:{null} 而不是值
SetEnv myvar ${HOSTNAME}
Header set X-Serv %{myvar}e
没有成功:它显示在我的 HTTP 标头中:X-Serv: %{myvar}e
我还尝试了其他一些不同的组合:
请注意:我的 HOSTNAME 环境变量存在,并且它显示在“env”命令中,其中 apache 用户拥有 httpd 进程
任何想法?
我有一个通用的 VPS,并且正在对它的应用程序进行 Dockerising。上面将有大约 5-6 个容器,其他很少,因此可以根据需要对盒子进行简单的重建。
对于每个应用程序,我都有一个启动脚本。WordPress 容器如下所示:
#!/bin/bash
# Get the host IP address
export DOCKER_HOSTIP=`ifconfig docker0 | grep "inet addr" | cut -d ':' -f 2 | cut -d ' ' -f 1`
echo "Connecting to database on Docker host ${DOCKER_HOSTIP}"
docker run \
--add-host=docker:${DOCKER_HOSTIP} \
--network dockernet \
--network-alias jonblog \
--detach \
--restart always \
--rm \
jonblog
Run Code Online (Sandbox Code Playgroud)
但是,这会返回错误:
冲突选项:--restart 和--rm
有几张 Docker 票说这是明智的,但我不明白。我想我的意思很明确:如果一个容器没有运行(例如在启动时),那么我想启动它。如果它死了,那么我希望容器被删除,并从基础映像创建一个新的容器。无论如何,容器应该是不可变的——我希望保留的任何状态,如媒体文件和日志,都将被写入卷。
所以,我想我应该放弃这个--restart标志,然后使用进程管理器来停止和启动 Docker 容器。我可以在这里使用Monit吗?我希望能够做这样的事情:
CHECK PROCESS jonblog MATCHING jonblog
START PROGRAM = …Run Code Online (Sandbox Code Playgroud)