我有一台安装了直接管理和 httpd apache 服务器。我听说如果你使用nginx作为前端,然后 apache 作为后端,它可以加快网站的加载速度。但在某些情况下教程据我了解,我需要在 apache 和 nginx 中配置虚拟主机。在我的服务器中,我有很多虚拟主机(DirectAdmin 帐户),有很多工作要做。
有没有什么捷径?
答案1
我非常怀疑有人编写了任何脚本来向每个虚拟主机添加代理代码。
我通常用以下两种方法之一来解决此类问题:
- 正则表达式搜索和替换
- 文本编辑器宏
我用的是文本编辑器 nedit,我曾在博客中讨论过它为什么很棒. 它具有出色的正则表达式支持和宏。
假设您有一堆类似这样的 nginx 指令:
server {
listen myhost:80;
server_name myhost;
location / {
root /path/to/myapp/public;
}
}
你需要让它看起来像这样
server {
listen myhost:80;
server_name myhost;
location / {
root /path/to/myapp/public;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://myapp:8080;
}
}
正则表达式搜索和替换
我使用正则表达式搜索root /path/to/(myapp)/public
(请注意 myapp 周围的括号,以便我可以在替换中使用它)并将其替换为:
root /path/to/\1/public;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://\1:8080;
宏
我可以使用以下步骤创建一个宏来执行同样的事情:
- 搜索“位置 /”
- 将光标置于文档顶部
- 开始录制宏
- 按“ctrl g”再次搜索,找到“location /”的第一个实例
- 按“home”键,然后按“向下”箭头,到达下一行的开头
- 按“ctrl 右箭头”将光标按单词移动,直到到达“myapp”的开头
- 按“ctrl shift 右箭头”然后按“shift 左箭头”突出显示“myapp”
- 按“ctrl c”复制“myapp”
- 输入代理指令,需要时使用“ctrl p”粘贴“myapp”
- 停止录制宏
- 根据需要重复播放宏多次。