nginx

PHP正确获取客户端IP地址

倖福魔咒の 提交于 2020-12-17 06:50:41
现状 目前主流的函数方法: <?php function getIp() { if ( $_SERVER[ "HTTP_CLIENT_IP"] && strcasecmp( $_SERVER[ "HTTP_CLIENT_IP"], "unknown")) { $ip = $_SERVER[ "HTTP_CLIENT_IP"]; } else { if ( $_SERVER[ "HTTP_X_FORWARDED_FOR"] && strcasecmp( $_SERVER[ "HTTP_X_FORWARDED_FOR"], "unknown")) { $ip = $_SERVER[ "HTTP_X_FORWARDED_FOR"]; } else { if ( $_SERVER[ "REMOTE_ADDR"] && strcasecmp( $_SERVER[ "REMOTE_ADDR"], "unknown")) { $ip = $_SERVER[ "REMOTE_ADDR"]; } else { if (isset ( $_SERVER[ 'REMOTE_ADDR']) && $_SERVER[ 'REMOTE_ADDR'] && strcasecmp( $_SERVER[ 'REMOTE_ADDR'], "unknown") ) { $ip = $_SERVER[ 'REMOTE

zabbix监控nginx

和自甴很熟 提交于 2020-12-17 04:54:43
1、开启nginx的stub_status状态统计(nginx需支持http_stub_status_module模块) # vim www.xxx.com.conf upstream www-xxx-com { server 10.0.1.61:8081 weight=10 max_fails=3 fail_timeout=10; server 10.0.1.119:8081 weight=10 max_fails=3 fail_timeout=10; } server { listen 80; server_name www.xxx.com; location /nginx_status { stub_status on; access_log off; } location / { proxy_pass http://www-xxx-com; include proxy.conf; userid on; userid_name uid; userid_domain xxx.com; userid_path /; userid_expires 365d; add_header Access-Control-Allow-Origin *; break; } access_log /data/log/nginx/www.xxx.com.access.log main; error

zabbix监控多个nginx vhost网站状态码

ぃ、小莉子 提交于 2020-12-17 04:02:56
需求 假设一台服务器运行了N个vhost网站,如何确定在大流量并发时候找到是哪个网站的问题呢? 这似乎是每个运维都会遇到的问题,方法有很多比如:1、看nginx日志大小确定访问量。2、通过前端代理确定访问量。3、通过防火墙,waf等工具确定访问量。4、通过elk日志,splunk日志分析系统等等 这里讲一个nginx的模块利用方法:Nginx Vhost Traffic Status 添加nginx模块 添加nginx模块的方法有很多,比如  https://blog.csdn.net/zyw_java/article/details/80558320 注意生产环境不要覆盖make install 最后安装完大概是这个样子,我们要手动取得里面5xx错误条数,进行监控出图。我来做一块砖,给大家一个思路。其他的功能实现照葫芦画瓢就行。 获取他的JSON格式文件,用python解析并汇报到zabbix里 JSON路径为:http://域名或者ip/status/format/json 为了安全起见建议设置nginx的allow和deny 例如下面: location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; allow 192.168.80.0/28; allow

Linux运维跳槽面试精华题|第三集

拟墨画扇 提交于 2020-12-17 00:01:14
作者:运维派 来源:http://www.yunweipai.com/archives/27983.html 21、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip cat access.log | awk ‘{print $1}’ | uniq -c | sort -rn | head -10 22、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log 23、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1 iptables -A PREROUTING -d 192 .168 .2 .1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192 .168 .2 .1 :8080 24、简述raid0 raid1 raid5 三种工作模式的工作原理及特点 RAID 0 :带区卷,连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率 但它没有数据冗余,RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证 而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0

【明晚8点直播】TLS卸载:用NGINCX搭建高性能TLS服务器

走远了吗. 提交于 2020-12-16 20:44:44
NGINX开源社区技术专题系列课程(安全专题) 每周四晚8-9点 扫描下方二维码参加吧 活动推荐 1 扫描下方二维码,快来报名吧! 2 扫描下 方二维码,快来报名吧! 你还不能错过: 你还不能错过: 你还不能错过: URL是如何关联location配置块的? 如何configure定制出属于你的Nginx? HTTP请求是如何关联Nginx server{}块的? 问答、课件及录像地址:NGINX从入门到精通进阶系列培训 F5收购NginX 点击下方 阅读原文 ,加入NGINX开源社区! 本文分享自微信公众号 - NGINX开源社区(gh_0d2551f1bdb6)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4580897/blog/4714578

【明晚8点直播】WAF应用层攻击对抗详解

和自甴很熟 提交于 2020-12-16 20:44:24
NGINX开源社区技术专题系列课程 (安全专题) 每周四晚8-9点 扫描下方二维码参加吧 活动推荐 1 扫码报名,参与活动 2 扫描二维码,提交征文参与活动 3 扫描下 方二维码,快来报名吧! 你还不能错过: 你还不能错过: 你还不能错过: URL是如何关联location配置块的? 如何configure定制出属于你的Nginx? HTTP请求是如何关联Nginx server{}块的? 问答、课件及录像地址:NGINX从入门到精通进阶系列培训 F5收购NginX 点击下方 阅读原文 ,加入NGINX开源社区! 本文分享自微信公众号 - NGINX开源社区(gh_0d2551f1bdb6)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4580897/blog/4774424

K8S从入门到放弃系列-(12)Kubernetes集群Coredns部署

江枫思渺然 提交于 2020-12-16 20:11:39
摘要:   集群其他组件全部完成后我们应当部署集群 DNS 使 service 等能够正常解析,1.11版本coredns已经取代kube-dns成为集群默认dns。 1)下载yaml配置清单 [root@k8s-master01 ~]# mkdir /opt/k8s/ coredns [root@k8s -master01 ~]# cd /opt/k8s/coredns/ [root@k8s -master01 coredns]# wget https: // raw.githubusercontent.com/coredns/deployment/master/kubernetes/coredns.yaml.sed [root@k8s-master01 coredns]# mv coredns.yaml. sed coredns.yaml 2)修改默认配置清单文件 [root@k8s-master01 ~]# vim /opt/k8s/coredns/coredns.yaml # 第一处修改 apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube - system data: Corefile: | .: 53 { errors health ready kubernetes cluster

【明晚8点直播】恶意客户端的防御控制

天涯浪子 提交于 2020-12-16 20:02:32
NGINX开源社区技术专题系列课程 (安全专题) 每周四晚8-9点 扫描下方二维码参加吧 活动推荐 1 扫描二维码,提交征文参与活动 2 扫描下 方二维码,快来报名吧! 你还不能错过: 你还不能错过: 你还不能错过: URL是如何关联location配置块的? 如何configure定制出属于你的Nginx? HTTP请求是如何关联Nginx server{}块的? 问答、课件及录像地址:NGINX从入门到精通进阶系列培训 F5收购NginX 点击下方 阅读原文 ,加入NGINX开源社区! 本文分享自微信公众号 - NGINX开源社区(gh_0d2551f1bdb6)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4580897/blog/4810862

Linux 查询 OS、CPU、内存、硬盘信息

流过昼夜 提交于 2020-12-16 17:55:02
一.前言 当我们接手了一台或者几台服务器的时候,首先我们有必要对服务器的基本配置有所认识,这样才可以对症下药,对以后的软件部署,系统运维会有事半功倍的效果。 二.关于服务器基本配置 查询服务器的基本配置一般查询操作系统,CPU,内存,硬盘,下面进行逐一讲解。 2.1 操作系统基本配置查询 查看操作系统版本 #cat /etc/redhat-release这个命令主要是查看红帽发行的操作系统的版本号 [ root@node5 ~ ] # cat /etc/redhat-release CentOS Linux release 7.4 .1708 (Core) #cat /etc/issue这个命令适用于大多数linux发行版 [ root@node5 ~ ] # cat /etc/issue S Kernel r on an m 查看操作系统内核版本 [root@node5 ~] # uname -r 3 .10 .0-693 .el7 .x86_64 查看操作系统详细信息 [root@node5 ~] # uname -a Linux node5 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux #从上面这段输出可以看出,该服务器主机名是node5

解锁Redis锁的正确姿势

北城以北 提交于 2020-12-16 16:04:04
redis是php的好朋友,在php写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为。这个时候我们就要用到锁。锁的方式有好几种,php不能在内存中用锁,不能使用zookeeper加锁,使用数据库做锁又消耗比较大,这个时候我们一般会选用redis做锁机制。 setnx 锁在redis中最简单的数据结构就是string。最早的时候,上锁的操作一般使用setnx,这个命令是当:lock不存在的时候set一个val,或许你还会记得使用expire来增加锁的过期,解锁操作就是使用del命令,伪代码如下: 1if (Redis::setnx("my:lock", 1)) { 2 Redis::expire("my:lock", 10); 3 // ... do something 4 5 Redis::del("my:lock") 6} 这里其实是有问题的,问题就在于setnx和expire中间如果遇到crash等行为,可能这个lock就不会被释放了。于是进一步的优化方案可能是在lock中存储timestamp。判断timestamp的长短。 set 现在官方建议直接使用set来实现锁。我们可以使用set命令来替代setnx,就是下面这个样子 1if (Redis::set("my:lock", 1, "nx", "ex", 10)) { 2 ... do