【Linux】如何在 Linux 系统中使用 envsubst 来处理 Nginx 配置模板

一、创建 nginx.template 模板文件

vim nginx.template

复制下面文件内容

server {  
    listen ${BY_PORT};  
    server_name ${BY_HOST};  
  
    location /sys/ {  
        proxy_pass http://${BY_GRAFANA_HOST}:${BY_GRAFANA_PORT}/;  
    }  
  
    # 其他配置...  
}

这个模板中包含了几个环境变量:BY_HOSTBY_PORTBY_GRAFANA_HOSTBY_GRAFANA_PORT

接下来,你可以设置这些环境变量,并使用 envsubst 命令来生成最终的 Nginx 配置文件。在 Bash 脚本中,你可以这样做:

二、创建 modify.sh 脚本文件

vim modify.sh

复制下面文件内容:

#!/bin/bash  
  
# 设置环境变量  
export BY_HOST="example.com"  
export BY_PORT="80"  
export BY_GRAFANA_HOST="grafana.example.com"  
export BY_GRAFANA_PORT="3000"  
  
# 使用 envsubst 替换模板中的环境变量,并将结果写入 nginx.conf  
envsubst '$BY_HOST $BY_PORT $BY_GRAFANA_HOST $BY_GRAFANA_PORT' < nginx.template > nginx.conf  
  
# 显示生成的配置文件  
cat nginx.conf

三、增加权限 执行脚本

chmod +x modify.sh 

./modify.sh

当你运行这个脚本时,它会首先设置环境变量,然后使用 envsubst 将模板文件中的变量替换为相应的值,并将结果写入 nginx.conf 文件。最后,它使用 cat 命令显示生成的 Nginx 配置文件的内容。

执行这个脚本后,你应该会在当前目录下看到一个 nginx.conf 文件,内容如下:

server {  
    listen 80;  
    server_name example.com;  
  
    location /grafana/ {  
        proxy_pass http://grafana.example.com:3000/;  
    }  
  
    # 其他配置...  
}

请注意,这个示例假设 nginx.template 文件和脚本文件在同一个目录下。如果它们在不同的目录下,你需要相应地调整文件路径。

四、扩展

nginx.templatenginx.conf 之间的主要区别在于它们的用途和生成方式。

  1. 用途:
    • nginx.template:这是一个模板文件,其中包含了 Nginx 配置的骨架和一些占位符(如环境变量)。它通常用于自动化部署或配置管理,以便能够动态地插入特定的值(如主机名、端口号等)来生成最终的 Nginx 配置文件。
    • nginx.conf:这是 Nginx 的实际配置文件,其中包含了 Nginx 服务器运行所需的指令和设置。Nginx 进程在启动时会读取这个文件来配置其行为。
  2. 生成方式:
    • nginx.template:这个文件通常不直接由 Nginx 使用。相反,它会被一些工具或脚本(如 envsubst、Ansible、Chef、Puppet、Docker 的 ENVSUBST 指令等)处理,以替换其中的占位符,并生成最终的 nginx.conf 文件。
    • nginx.conf:这个文件是由人工或自动化工具创建的,并且可以直接被 Nginx 进程读取和使用。在大多数情况下,nginx.conf 文件是静态的,但在使用模板生成的情况下,它可能是由 nginx.template 动态生成的。
  3. 内容:
    • nginx.template:可能包含变量、注释和 Nginx 配置指令的混合。变量通常以某种形式(如 ${VARIABLE_NAME}$(VARIABLE_NAME))表示,以便在模板处理过程中被替换。
    • nginx.conf:只包含 Nginx 配置指令和值。这些值通常是具体的、静态的,除非使用某种形式的自动重新加载或热更新。
  4. 位置:
    • nginx.template:可能位于任何方便的位置,具体取决于你的部署流程或配置管理工具。它通常与源代码或配置管理代码一起存储。
    • nginx.conf:通常位于 Nginx 的配置目录中,这通常是 /etc/nginx/(在大多数 Linux 发行版中)或 /usr/local/nginx/conf/(如果你从源代码编译 Nginx)。
  5. 更新:
    • nginx.template:当需要更改 Nginx 配置的某些部分时,你可能需要更新模板文件,然后重新运行模板处理脚本来生成新的 nginx.conf 文件。
    • nginx.conf:直接编辑这个文件可能会很危险,因为它可能会被模板处理脚本覆盖。通常,你应该通过更新 nginx.template 并重新生成 nginx.conf 来更改配置。但是,在某些情况下(如手动添加自定义配置),你可能需要直接编辑 nginx.conf。在这种情况下,请确保你了解这些更改如何与模板处理流程交互。
  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 系统使用 Nginx 配置图片服务器主要涉及以下几个步骤: 1. 安装 Nginx使用包管理工具(如 apt、yum 等)安装 Nginx。例如,在 Ubuntu 上可以使用以下命令进行安装: ``` sudo apt update sudo apt install nginx ``` 2. 创建图片存储目录:在服务器上创建一个用于存储图片的目录,例如 `/var/www/images`。 3. 配置 Nginx:打开 Nginx配置文件,在 Ubuntu 上通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/sites-available/default`。在配置文件,你需要进行以下操作: - 在 `http` 块内,新增一个 `server` 块,用于配置图片服务器。 - 在 `server` 块内,设置监听的端口号和域名。例如: ``` server { listen 80; server_name example.com; } ``` - 在 `server` 块内,配置请求的路由和反向代理。例如: ``` location /images { alias /var/www/images; } ``` 上述配置表示当访问 `example.com/images` 路径时,Nginx 会将请求转发到 `/var/www/images` 目录下。 4. 保存配置文件并重启 Nginx:保存修改后的配置文件,并重启 Nginx 使配置生效。在 Ubuntu 上可以使用以下命令重启 Nginx: ``` sudo systemctl restart nginx ``` 完成以上步骤后,你就可以通过访问配置的域名和路径来访问图片服务器了。例如,通过浏览器访问 `http://example.com/images/image.jpg` 将会返回 `/var/www/images/image.jpg` 的内容。请注意,具体的配置细节可能因个人需求和环境而异,你可以根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值