开发环境和生产环境下的文件不一致,怎么执行自动化部署呢?

2016-06-02 10:37:14 +08:00
 rogwan

由于本地的开发环境不需要安装生产环境中才用到的 nginx 负载均衡等前端配置,而程序中有涉及到用户访问 ip 的业务逻辑,本地开发环境取的只是 local 本地 request 的 remote_addr ,取不到 nginx 前端转发过来的 ip 。 这样就造成每次把程序部署到生产环境,都要手动修改 ip 的取值方式后,才能推送到生产环境。 或者:自动部署上去后,去生产机上手动修改这几行代码。

有什么方式,可以解决这样的问题呢?

5013 次点击
所在节点    Python
26 条回复
Infernalzero
2016-06-02 13:20:46 +08:00
@just1
这和 LZ 的问题没有任何关系,伪造是另一回事了,是否有安全问题还得看具体业务,而且 remote_addr 也一样能伪造,这个问题是避免不了的
nginx 配置一般会把 X-Real-IP 的值设置为 remote_addr ,所以如果 X-Real-IP 不真实的话 remote_addr 也一样不真实
just1
2016-06-02 13:32:13 +08:00
@Infernalzero remote_addr 是无法伪造的。连接的主机 ip 地址多少就是多少,请求头有这个也是没用的, nginx 设置就更无从谈起了,都是 xrealip 设置为 remoteaddr ,在说即使设置了 remoteaddr 也是无效的配置。
bobchengbin
2016-06-02 13:36:38 +08:00
dotenv 用环境变量来区分不同的环境
Infernalzero
2016-06-02 13:41:43 +08:00
@just1
怎么可能是改 header
1.改网络层的包
2.挂代理
nginx 配置一般都会加这句
proxy_set_header X-Real-IP $remote_addr;
在有 nginx 的情况下对于后端来说要取客户端 IP 不看 X-Real-IP 还看啥,不然你依然都是直接取 remote_addr 不每次都是 nginx 的 ip 了吗
qq5745965425
2016-06-02 13:46:53 +08:00
docker
armoni
2016-06-02 15:10:46 +08:00
docker

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/282910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX