nginx.conf
我有一个纯文本格式的Nginx ( ) 配置。它有拉丁字符、空格缩进,总共约 250 行。我在从源代码编译 Nginx 时使用它。编译源代码后,我使用文本编辑器创建 (空) nginx.conf
,然后复制并粘贴普通配置,保存它,然后弹起 Nginx 以使用普通配置。与构建过程的自动化组件一起,复制并粘贴到编辑器中的操作有点麻烦。
普通配置文件对我来说是本地的(至少在可预见的将来),而不是在线的。因此,这构成curl
或wget
禁止。理想情况下,我希望将我的香草编码nginx.conf
为单个字符串,然后tee
(或类似)将其编码到服务器端nginx.conf
,绕过打开-复制-粘贴-保存-退出舞蹈。
工作流程将是:
获取并编译 Nginx 源码
搭建Nginx脚手架
nginx.conf
通过将预编码字符串输入tee
(或类似)自动创建反弹 Nginx
请问我该如何进行第 3 步?
答案1
如果您想使用tee
远程服务器
ssh user@remote tee /path/to/nginx.conf < local-nginx.conf
这假定远程/path/to/nginx.conf
用户可以写入远程内容。
附加> /dev/null
以抑制标准输出。
答案2
在一条评论您解释说您在远程服务器上构建了 Nginx 应用程序(通过 连接ssh
),但您已将nginx.conf
配置文件保存在本地计算机上。
在这种情况下,使用scp
从本地机器到远程系统直接复制配置文件:
ssh rUser@rHost # Connect to remote system
… build nginx etc …
scp my_nginx.conf rUser@rHost:nginx.conf # Copy from current directory to $HOME on remote
该命令采用到目标的可选路径(如果路径不以 开头,则scp
相对于远程用户的路径)。如果您没有直接写入目标文件的权限(并且您不能),则可以使用with代替。但这更难看,因为我们不能简单地通过管道传输$HOME
/
scp
root@rHost
ssh
sudo
标准输入并且还允许输入密码sudo
:
scp my_nginx.conf rUser@rHost:/tmp/nginx.conf.$$ &&
ssh -t rUser@rHost "sudo sh -c 'cat /tmp/nginx.conf.$$ >/etc/nginx.conf'; rm -f /tmp/nginx.conf.$$"
如果需要的话,该ssh … sudo sh -c '…'
构造也提供了重新启动 Nginx 的空间