背景:

最近团队在搞开发与测试环境整理。更换旧的IP段,启用新的IP段,一系列原来的上百台虚拟机上的成百上千个应用的“无缝”对接也是个问题,其实也不算是完全无缝,还是会有点小影响,但贵在对环境搭建熟悉的同事大有人在,所以倒不担心替换后有具体技术解决不了,这个过程中,到目前为止,其中难点不在于技术,在于做事的思考方法上,列举一个我认为比较不错的方法,当然这是别的同事想出来的。

原来我们开通外网访问的虚拟机上,一个tengine配置里有无数个应用,哪些有用,哪些没用,都不是太清楚,而又有些location配置一定要用根目录也不清楚为什么是否有可解方法,毕竟根目录只有一个

一向没有专人维护所以导致现在乱七八遭,这次一次整理了。

问题:

1、减少安全隐患

2、整理清楚原有环境配置

思路:

1、首先安全方面,只要开通了外网,就会很大安全隐患,这个世界不怕贼多就怕被贼惦记了,在安全层面,对这台外网的机器做了如下的处理:

a.限制单个上传文件20m
b.禁爬虫
c.禁http跳转->https
d.禁非公司域名
e.限制非本公司ip访问/admin

具体操作,可以百度或gogle,linux虚拟机设置

2、机器上服务启动关闭方面,做成 定时任务,把此机器上应用下班时候都停掉,shell脚本挺简单的

a、每天某个时间点进行强制停止服务,可以直接kill也可以直接进到服务中bin里面启动停止

b、某个时间点做停止服务操作,且在之后,每半小时会重新再停止一次,第二天早上8点开启服务

c、遇到加班情况,自行开启,但半小时会停止。

3、如果几十个应用都有外网访问的需求,那么tengine入口配置就会有几百个配置信息。太多了怎么办

a、由各项目负责人找配置管理员加相关配置,提供开通时长,到时间后自动删除,如果与预计时间有误差,删除后再重新添加,不会持续保留一再延期

b、tengine-conf配置按网站目录分类,这样同一类的配置文件就很少,例如

看一下入口tengine配置:加了一些过滤

server {listen       80 ;server_name  xx.(1x|2x|3x|4x|5x|6x|7x|8x).com.cn 127.0.0.1 localhost 192.168.*;  #允许访问的server名称include nginx_ssl.conf;  #增加https加密码访问配置#请求过滤:禁止http跳https,http跳https会有几次握手,用的协议就是CONNECTif ( $request ~* "CONNECT " ) {  return 403;}#请求过滤:防刷防爬虫if ( $http_user_agent ~* (pider|bot|Yahoo\!|dita) ) {return 403;}#请求过滤:过滤请求域名if ( $host !~* xx(1x|2x|3x|4x|5x|6x|7x|8x) ) {return 403;}#请求过滤:禁IP,#单看nginx模块名ngx_http_access_module,很多人一定很陌生,但是deny和allow相比没一个人不知道的,实际上deny和allow指令属于ngx_http_access_module.我们想控制某个uri或者一个路径不让人访问,在nginx就得靠它了。set $allowss true;if ( $request ~* /xx ){#访问请求URL带xx结尾的set $allowss p;}#来源IP限制:remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP。什么是x_forwarded_for正如上面所述,当你使用了代理时,web服务器就不知道你的真实IP了,为了避免这个情况,代理服务器通常会增加一个叫做x_forwarded_for的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IPif ( $remote_addr !~* (127.0.0.1|219.x.244.|x.136.x.|61.x.x.|192.168.|x.x.30.|x.5.251.|x.107.x.|x.77.x.|x.23.x.|14.x.x.|x.x.122.|x.90.x.|120.x.x.) ){set $allowss "${allowss}c";}if ( $allowss = pc) {#set $allowss false;return 403;}#teninge run statuslocation = /nginx-status { stub_status on; access_log off; allow 127.0.0.1; allow 192.168.0.0/16; deny all;}include aa/*.conf;include bb/*.conf;include cc/*.conf;include dd/*.conf;include ee/*.conf;include ff/*.conf;include gg/*.conf;

再来看一下具体到每一个应用的配置文件:

[root@vv /data/PRG/tengine_online/conf]$ cd aa/
[root@vv /data/PRG/tengine_online/conf/aa]$ ll
总计 8
-rw-r--r-- 1 root root 316 05-17 15:02 aa1.conf
-rw-r--r-- 1 root root 310 05-17 16:31 aa2.conf
[root@v72 /data/PRG/tengine_online/conf/pcauto]$ vim aa1.conf location ~ ^/aa1{ #目录根据实际可以自己改名称proxy_pass   http://192.168.xx.xx:port; #直接写应用后端IP和端口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;}

其实在这一步,。也不是应用所有目录下的URL都有外网访问需求嘛,我们也可以指定某些路径下

是不是很简单明了呀!!!!

从环境搭建探讨做事的方法相关推荐

  1. Android开发环境搭建及常见问题解决方法

    Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...

  2. 极海APM微控制器基于IAR开发环境搭建与工程调试配置方法

    极海APM微控制器基于IAR开发环境搭建与工程调试配置方法 ✨本篇主要针对基于IAR for ARM版本:V9.30.1环境搭建和工程调试配置过程进行介绍,当然也同样适用于基于ARM架构芯片的开发使用 ...

  3. 网络映射环境搭建的3种方法

    搭建映射环境的3种方法: 1.用路由器开启映射,来模拟客户场景: 2.通过虚拟机实现: 3.借助办公环境实现: 目录: 应用场景: 环境需求: 有的公司需要在内部部署一套系统,会映射到公网,而不是直接 ...

  4. VUE环境搭建与安装的方法步骤

    Vue.js 是什么 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...

  5. Git环境搭建与基本使用方法

    Git这个东东不必说太多,想来大家也都听说过.最早开始是由Ruby程序员们发起的.记得2008年接触Ruby和Rails的时候还没有这个东东,代码在线管理还是百花齐放.Ruby是日本的家伙搞出来的,日 ...

  6. Git环境搭建与基本使用方法 (转自http://blog.csdn.net/fireelement/article/details/9618363)

     以前公司有的项目也用这个东东,但我的项目中还是始终使用svn,华为以前用的是VSS,不过后来也开始推别的了,如CVS(2006年,SVN貌似还不太火). Git这个东东不必说太多,想来大家也都听 ...

  7. android studio ndk HelloWorld 编译环境搭建

    android studio NDK helloworld 项目 第一步 android studio ndk 编译环境搭建 http://yunpan.cn/c3cCxxgwrqDaL 访问密码 6 ...

  8. apache和mysql 403_如何使用mysql(lamp)分离环境搭建dedecms织梦网站及apache服务器常见的403http状态码及其解决方法...

    一.实验环境 centos6.5+mysql5.5.32+php5.3.27 软件:DedeCMS-V5.7-GBK-SP1 本实验是使用lamp环境搭建,但mysql数据库与之分离,本实验成功的关键 ...

  9. SFTP环境搭建及客户代码调用公共方法封装

    一.背景 在开发应用软件的过程中,广泛使用FTP在各子系统间传送文本数据.但FTP存在安全问题,开放到外网存在安全漏洞,容易被攻击.替换方案是使用SFTP,SFTP提供更高的安全性,当然传输的效率也会 ...

  10. 单片机搭建环境烧录方法_万物互联-stm32单片机简介、烧录、编程及其项目环境搭建...

    万物互联-stm32单片机简介.烧录.编程 前言:stm32单片机这里给出简单介绍,给不了解的朋友普及下硬件端的基本知识,叙述的较为简单,想深入研究的朋友可以去一些官方网站.论坛.博客汲取知识.最下端 ...

最新文章

  1. CentOS 安装Python3
  2. bitnamigitlab_100%可用不坑爹的BitNami GitLab安装教程
  3. 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用
  4. 深入理解脚本化CSS系列第二篇——查询计算样式
  5. Iterator_迭代器模式_PHP语言描述
  6. cat3 utp是不是网线_小科普 | 网线也有高低?聊聊网线的差别
  7. 台式电脑可以连wifi吗_不使用WIFI,手机也可以通过电脑的网络上网
  8. SpringBoot 中的事务处理 @Transactional
  9. python类中的函数调用关系_Python中类的内置方法与继承关系实例
  10. golang 关闭gc 并手动gc_Golang 防内存泄漏编码原则
  11. 我眼中的Android Framework
  12. 【位操作笔记】计算以2为底整数N的对数 查表法
  13. ZOJ 3987 Numbers(Java枚举)
  14. 叮咚:分享一款超棒的模组:IDO-SOM6Y08
  15. 群晖nas安装监控后台SurveillanceStation
  16. 阿卡迪亚大学计算机专业好考吗,考上阿卡迪亚大学有多难?
  17. 按哪个键进入BIOS设置
  18. 【21天学习挑战赛学习打卡】顺序查找
  19. 【异常检测】DAGMM:结合深度自编码器器和GMM的端到端无监督网络(二):代码实战(PyTorch)...
  20. 2022年全球市场工业缝纫机总体规模、主要生产商、主要地区、产品和应用细分研究报告

热门文章

  1. JSONString 与 JSONData 与字典或者数组互相转化
  2. 在设计数据库时,使用代码,对数据项调整形成数字字典(小代码)
  3. sip系统完整性是什么?SIP系统完整性保护关闭方法(含M1)
  4. WebSocket:5分钟从入门到精通
  5. Windows server 2016 部署AD(Windows 域)
  6. 在你的 Android App 中使用 Flutter | Google开发者大会
  7. Flutter入门——山寨掘金(二)
  8. 客户端向hdfs读写数据流程
  9. 当程序员是我最大的遗憾
  10. 演变与重塑----2014全球软件技术峰会感想