大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说nginx环境变量配置_centos添加静态路由,希望您对编程的造诣更进一步.
如何在Nginx.conf使用环境变量
前言
在开发部署过程中,我们会将项目应用发布到不同的环境上,不同的环境通过不同的参数配置来加载不同的资源。
例如我们应用采用k8s方式管理部署应用容器,通过configMap配置不同环境的资源。对于SpringBoot后台应用,我们可以将后台yaml配置文件所加载的资源设置成变量的形式,之后通过k8s configMap进行配置,而对于Nginx反向代理配置,configMap可以配置nginx服务的环境变量,如何让nginx.conf根据环境变量加载对应的配置,成为我们亟待解决的问题。
温馨提示:本文是萌新对nginx.conf引入环境变量方法的一种记录和学习,请大佬多多指正。
解决思路
如何在nginx配置中引入OS变量?经过相关的资料查询,nginx目前没有在配置中引入环境变量的内置功能,有的方案是引入ngx_http_perl_module的perl_set指令,这是nginx的额外模块。
这里提供一种另外的简易思路,来解决这个问题,我们可以通过环境变量生成nginx的外部配置文件,之后nginx.conf通过引入外部文件来实现环境变量参数的配置。
1)构建外部配置文件生成脚本otherserver.sh
通过configMap已配好nginx镜像容器的环境变量,在容器服务启动时,执行该脚本,生成待加载的外部配置文件upstream.conf
echo "upstream otherserver {" > /usr/local/nginx/conf/upstream.conf
echo " server $OTHER_SERVER1;" >> /usr/local/nginx/conf/upstream.conf
echo " server $OTHER_SERVER2;" >> /usr/local/nginx/conf/upstream.conf
echo "}" >> /usr/local/nginx/conf/upstream.conf
- nginx.conf从外部文件中引入配置参数
include ./upstream.conf
server {
listen 1002;
server_name otherserver;
client_max_body_size 100m;
server_tokens off;
add_header X-Frame_Options SAMEORIGIN;
location / {
proxy_pass https://otherserver;
}
}
- 编辑修改dockerfile
# 部分配置
ADD ./nginx.conf /usr/local/nginx/conf/
ADD ./run.sh /root
ADD ./otherserver.sh /root
EXPOSE 80
ENTRYPOINT ["sh","/root/run.sh"]
其中run.sh是服务启动脚本,加入dmzserver.sh执行语句。dockerfile配置好后,构建镜像。
# 部分配置加入
sh /root/dmzserver.sh
其他
中间遇到的坑,我们在nginx.conf配置反向代理https后,启动服务报错,只要原因是编译时没有添加ssl模块导致的。
解决方案:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module\
-- with-http_ssl_module --error-log-path=/var/log/nginx/error.log --http=log=path=/var/log/nginx/access.og \
&& make && make install
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13377.html