0

我有heredoc:

user_data = <<-USERDATA

#!/bin/bash
echo "server {" >> /etc/nginx/sites-available/site
echo "    listen 80;" >> /etc/nginx/sites-available/site
echo "    location / {" >> /etc/nginx/sites-available/site
echo "        proxy_set_header   X-Forwarded-For $remote_addr;" >> /etc/nginx/sites-available/site
echo "        proxy_set_header   Host $http_host;" >> /etc/nginx/sites-available/site
echo "    }" >> /etc/nginx/sites-available/site
echo "}" >> /etc/nginx/sites-available/site

-USERDATA

现在,$remote_addr;and$http_host;不应该被插值,但是当我得到输出时是,并且是空的。

我试过使用$$remote_addr; 但这也返回一个空结果,而不是字符串$remote_addr;

谁能看到我在转义 $ 字符方面做错了什么?

解决方法

通过使用 terraforms 插值,我能够渲染${"$remote_addr;"}返回 $remote_addr;的字符串。

但也许存在更好的解决方案?

4

1 回答 1

0

您可以使用分隔符将文本块插入文件,使其更易于阅读,例如:

#!/bin/bash

cat <<EOM >/etc/nginx/sites-available/site
server {
    listen 80;
    location / {
        proxy_set_header   X-Forwarded-For \$remote_addr;
        proxy_set_header   Host \$http_host;
    }
}
EOM

但是您仍然需要按照注释 (\$) 中的建议转义 $ 符号。

于 2018-04-23T12:06:13.790 回答