首页 > 系统相关 >如何在nginx.conf中使用系统的环境变量(env)?

如何在nginx.conf中使用系统的环境变量(env)?

时间:2023-06-07 10:45:41浏览次数:42  
标签:变量 env openresty POD nginx conf 日志 环境变量


一、需求

 

如果在nginx的配置中,想要使用系统中,已经存在的环境变量的值,然后在后面的配置中使用这个变量的值,在系统中的这个变量,可以是动态变化的,比如pod的名字,这个环境变量,在每次pod的启动的时候,都会会发生变化的

 

那么,有什么办法来实现这个需求呢?

 

通过使用lua模块,来实现。

 

或者是,使用openresty,默认就会带lua nginx 模块

 

 

 

二、使用方法

 

在openresty中,在配置文件的开头部分,定义变量

 

1、在系统中存在环境变量POD_NAME

bash-5.1$ env | grep POD_NAME
POD_NAME=nginx-ingress-controller-j6gjs
POD_NAMESPACE=ingress-nginx
bash-5.1$ 

2、在nginx.conf中使用这个变量

 

然后,在后面的配置中,使用这个变量

		# Custom code snippet configured in the configuration configmap
		set_by_lua $pod_name 'return os.getenv("POD_NAME")';

 

这样,就会将这个变量引用到nginx配置中

 

换句话说,就是nginx的配置中,包括了这个变量和变量值

 

三、示例

 

1、在openresty中,使用PATH环境变量

 

 

2、在server中设置变量

 

获取系统的环境变量,并赋值给$path

 

3、在日志格式中应用$path变量

 

 

4、在server中开启日志

 

引用main日志格式

 

5、重启openresty,查看host.access.log日志文件

 

使用浏览器,访问openresty的页面

 

查看访问日志,发现是可以获取到系统的PATH变量的值的,已经显示在日志文件中了

 

但是注意:

 

nginx配置中使用的环境变量,不包括非系统定义的,没有jdk相关的东西

 

具体的原因,后面待查清楚... ...

标签:变量,env,openresty,POD,nginx,conf,日志,环境变量
From: https://www.cnblogs.com/chuanzhang053/p/17462664.html

相关文章

  • Nginx出现403 forbidden (13: Permission denied)报错的解决办法
    一、由于启动用户和nginx工作用户不一致所致1、将nginx.config的user改为和启动用户一致,命令:viconf/nginx.conf二、缺少index.html或者index.php文件,就是配置文件中indexindex.htmlindex.htm这行中的指定的文件。server{listen80;server_namelocalhost;indexindex.p......
  • Using kconfig for own projects
    2023-06-06   https://www.cnblogs.com/NJ-Leon/ IntroEveryLinuxprofessionalwritescripts.Someеimeslight,linear.Sometimescomplexscriptwithfunctionsandlibs(yes,youcanwriteyourbash-libraryforuseinotherscripts).Butsomeofthescrip......
  • nginx location带@
    目录nginxlocation带@nginxlocation带@我想访问https://dev-das.aaa.com/@config和https://dev-das.aaa.com/config的时候都能跳转到后端location~*/@?config{proxy_redirectoff;set$Real$proxy_add_x_forwarded_for;if($Real......
  • Nginx漏洞修复:SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
    SSL/TLS服务器瞬时Diffie-Hellman公共密钥过弱【原理扫描】。需编辑nginx.conf解决。1、生成dhparams.pem。cd/usr/local/nginx/confopenssldhparam-outdhparams.pem2048chmod-R755dhparams.pem2、编辑nging.conf文件,添加ssl_dhparam{pathto......
  • docker 操作nginx命令+docker-compose常用命令及yml文件编写
    docker-compose常用命令及yml文件编写https://blog.csdn.net/doubiy/article/details/118997661 https://docs.docker.com/compose/1.观察下载容器镜像过程dockerrun-dnginx:latest-d表示当前终端的后台运行nginx:latest就是最新的nginx版本2.访问容器中的ngi......
  • nginx代理webSocket 和eventSource 相关配置
    文章转载自: https://blog.csdn.net/Embrace924/article/details/92649471nginx代理webSocket和eventSource请求超时连接不通但是本地可以nginx代理出了问题不能普通代理一样要先发起普通请求代理然后通过一些属性再次转换#常用配置location/api/{    proxy_pas......
  • 获取nginx转发前的真实ip
    有时,需要获取客户端真实ip,但由于nginx转发后,已经不是真实ip地址解决方式如下:在你的nginx配置下加上如下配置即可location/{proxy_passhttp://127.0.0.1:8080;//转发到你的业务服务器服务器proxy_set_headerx-forwarded-for$remote_addr;//把真实ip设置到......
  • tscconfig.json--ts配置文件
    {//include用来指定那些需要被编译的ts文件//exclude用来指定那些不需要被编译的ts目录//默认不被编译的:["node_modules","bower_components","jspm_packages"]"include":[/***表示:任意目录*表示:任意文件*/"./src/**/*"],......
  • nginx 工作过程| 如何启动
    http://nginx.org/en/docs/beginners_guide.html配置文件改变之后,不起作用reload之后:如果配置文件正确,则会开启新的worker,并通知旧的结束手头的工作。(头:你们干完手里的就撤,不要接新活儿)如果配置文件不正确,则忽略,继续指导旧的工作。 CentOS6.5执行/usr/sbin/nginx即可......
  • nginx 和 php
     如果访问index.php那么一定要includefastcgi.conf(是相对路径,这点要注意)举例:location~\.php${fastcgi_pass127.0.0.1:9000;includefastcgi.conf;} ......