我使用NGINX作为反向代理。
我有3个环境**(开发、QA、生产)**
考虑一下,develop的IP地址是1.2.3.4,qa是4.3.2.1,production是3.4.1.2
我已经配置了nginx.conf文件如下,它在开发环境下工作得很好。
在构建这些docker-image时,我已经明确地提到了应该在哪个配置上构建图像,如下所示
cd conf/clustered-develop/;sudo docker build -t jcibts-swmdtr-dev.jci.com/nginx:1 --build-arg PORT=8765 --build-arg ENVIRONMENT=clustered-develop .
字符串
要求是docker-image应该只构建1,然后将其推送到Docker Trusted repository。
它将被提升到其他环境的docker可信存储库,而无需再次构建镜像。
我的问题是我能做些什么来为所有的环境工作这些单一的conf。
像IP替换为localhost或IP替换为127.0.0.1(我已经尝试了这两个,但不工作)
worker_processes 4;
events { worker_connections 1024; }
http {
sendfile on;
upstream consumer-portal {
server 1.2.3.4:9006;
}
upstream licenseportal {
server 1.2.3.4:9006;
}
server {
listen 8765;
location /consumer-portal/ {
proxy_pass http://consumer-portal/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
location /licenseportal/ {
proxy_pass http://licenseportal/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
型
2条答案
按热度按时间kpbwa7wx1#
关于answer:
1.您可以使用模板配置(例如:
/etc/nginx/conf.d/nginx.template
),它包含了所有你希望在dev、qa和prod之间改变的值的变量名。举例来说:字符串
1.然后为所有环境运行 * 相同 * 镜像,在运行镜像时使用
envsubst
,通过将模板中的变量替换为特定于环境的值来创建新的nginx.conf
:型
注意:需要将
envsubst
作为镜像的一部分安装。即RUN apt-get -y update && apt-get -y install gettext
lg40wkob2#
你可以在主http块中使用通过map声明的变量:
字符串
然后你可以合并if语句:
型
Source:在Nginx位置规则中使用变量