解决问题:
代码发布公司后,公司内部需要先测试,但其他用户正常使用
(此文章未使用lua模块)
- 参考:http://purplegrape.blog.51cto.com/1330104/1403123/
- 三个web容器,一个用作负载的nginx,一个web应用容器的nginx,一个web应用容器的apache
- 用作负载的nginx配置,在nginx的主配置中的http节点:/etc/nginx/nginx.conf.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以上四个配置为获取真实IP,因为经过nginx转发后,默认IP为127.0.0.1
upstream prod{
server xxx.xxx.xxx.xxx:8080;
}upstream pre-prod{ server xxx.xxx.xxxx.xxx; }
server
{
listen 80;
set $web_backend prod;
if ($remote_addr ~ “183.15.252.29”) {
set $web_backend pre-prod;
}location / { proxy_pass http://$web_backend; } }
- web应用容器的apache:作为第一个或默认的web应用配置
因为nginx负载转发时,访问是的http://xxx.xxx.xxx.xxx - web应用容器的nginx:作为第一个或默认的web应用配置
因为nginx负载转发时,访问是的http://xxx.xxx.xxx.xxx - 问题说明1:
以下是为了在请求头写入原始请求信息,否则在后端的web容器中或者domain就是pre-prod或者prod.切记!获取真实IP地址。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - 问题说明2:
upstream里面使用域名,还是默认访问web容器的第一个配置或默认配置,本来是想再再负载一次.但想到既然都用过负载了,不再需要考虑域名转发 - 还看到使用nginx的lua模块语言来作灰度
- 三个web容器,在做了负载后,不管哪个还是可以做多域名多虚拟空间的使用.记住的是后端加入负载的应该放入第一个默认项目,暂未解决根据域名转发
8.经测试,按上面的配置,访问正常,包括有多级文件夹