nginx通过获取环境变量实现动态IP代理配置

方案一(推荐):

转:https://blog.csdn.net/jiangqian6481/article/details/78310247

方案二:

下载nginx镜像

使用官方带perl模块(ngx_http_perl_module)的nginx镜像

docker pull nginx:perl

修改配置

nginx.conf配置

user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
 
//环境变量
env PROXY_HOST;
env PROXY_IP;

load_module modules/ngx_http_perl_module.so;
events {
 	use epoll;
 	worker_connections 1024;
}
http {
 	include /etc/nginx/mime.types;
 	default_type application/octet-stream;
	log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 	'$status $body_bytes_sent "$http_referer" '
 	'"$http_user_agent" "$http_x_forwarded_for"';
	access_log /var/log/nginx/access.log main;
	sendfile on;
 	#tcp_nopush on;
	keepalive_timeout 65;
	#gzip on;
 
	#运用perl获取环境变量赋值
	perl_set $PROXY_HOST 'sub { return $ENV{"PROXY_HOST"}; }';
	perl_set $PROXY_IP 'sub { return $ENV{"PROXY_IP"}; }';

	include /etc/nginx/conf.d/*.conf;
}

重点:

env PROXY_HOST;
env PROXY_IP;

perl_set $PROXY_HOST 'sub { return $ENV{"PROXY_HOST"}; }';
perl_set $PROXY_IP 'sub { return $ENV{"PROXY_IP"}; }';

default.conf配置

server {
    listen       80;
    server_name  localhost;
    charset utf-8;
    #access_log  /var/log/nginx/host.access.log  main;
    location /{
        proxy_pass   http://$PROXY_IP:$PROXY_HOST/;
    }
}

重点:

proxy_pass   http://$PROXY_IP:$PROXY_HOST/;

修改官方镜像配置或基于重新制作

重做的Dockerfile文件

FROM nginx:perl
COPY nginx.conf /etc/nginx/
COPY default.conf /etc/nginx/conf.d/

使用

指定容器的 PROXY_HOST 与 PROXY_IP 等环境变量即可

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一个高性能的Web服务器和反向代理服务器,它可以通过环境变量配置其行为。下面是Nginx环境变量配置的介绍: 1. 使用环境变量: 在Nginx配置文件中,可以使用`$`符号来引用环境变量。例如,`$variable_name`表示引用名为`variable_name`的环境变量的值。 2. 设置环境变量: 在Nginx启动之前,可以通过操作系统的方式设置环境变量。具体的设置方法取决于操作系统的不同。 3. 在Nginx配置文件中使用环境变量: 可以在Nginx配置文件中使用环境变量配置各种参数。例如,可以在`server`块或`location`块中使用环境变量来设置`root`、`proxy_pass`等参数的值。 示例: ``` server { listen 80; server_name example.com; root $NGINX_ROOT; location / { proxy_pass http://$UPSTREAM_SERVER; } } ``` 在上述示例中,`$NGINX_ROOT`和`$UPSTREAM_SERVER`是两个环境变量,它们的值将在Nginx启动时从操作系统中获取。 4. 动态修改环境变量Nginx还提供了一些指令和模块,可以在运行时动态修改环境变量的值。例如,可以使用`set`指令来设置环境变量的值,或者使用`env`模块来从请求中提取信息并设置环境变量。 示例: ``` server { listen 80; server_name example.com; set $my_variable "Hello, World!"; location / { add_header X-My-Variable $my_variable; } } ``` 在上述示例中,使用`set`指令设置了一个名为`$my_variable`的环境变量,并在响应头中添加了一个名为`X-My-Variable`的自定义头,其值为`Hello, World!`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值