nginx环境变量配置_centos添加静态路由

nginx环境变量配置_centos添加静态路由如何在Nginx.conf使用环境变量 前言 在开发部署过程中,我们会将项目应用发布到不同的环境上,不同的环境通过不同的参数配置来加载不同的资源。 例如我们应用采用k8s方式管理部署应用容器,通过co

如何在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
  1. 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;
	}
}
  1. 编辑修改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

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注