Nginx-Architecture
1. Nginx FAQ
1. 동일한 server_name을 가진 여러 가상 호스트가 우선적으로 액세스합니다
# 三个配置文件: # testserver1: server_name testserver1 www.rona1do.top; root /opt/app/code1; # testserver2: server_name testserver2 www.rona1do.top; root /opt/app/code2; # testserver3: server_name testserver3 www.rona1do.top; root /opt/app/code3;
위에서 언급한 동일한 server_name을 가진 3개의 가상 호스트를 구성하면 testserver1이 먼저 액세스되며 액세스 우선 순위는 서버에 따른 읽기 순서, 즉 파일 이름 정렬을 기준으로 합니다.
2. 위치 일치 우선순위
=: 일반 문자의 정확한 일치, 즉 완전 일치
^~: 일반 문자 일치를 나타냄, 접두어 일치 사용
~~: 일반 일치(대소문자 구분 없음 추가)
위의 우선순위는 위에서 아래로 감소합니다. 일치 후 처음 두 일치는 더 이상 아래쪽으로 검색되지 않습니다. 더 정확하게 일치하는 항목을 계속 검색하세요.
3. Nginx의 try_files 사용
파일이 순서대로 있는지 확인
# 先检查对应的url地址下的文件存不存在,如果不存在找/index.php,类似于重定向 location / { try_file $uri /index.php; }
4. Nginx의 별칭과 루트
root
location /request_path/image/ { root /local_path/image/; } # 请求:http://www.rona1do.top/request_path/image/cat.png # 查询: /local_path/image/request_path_image/cat.png
alias
location /request_path/image/ { alias /local_path/image/; } # 请求:http://www.rona1do.top/request_path/image/cat.png # 查询: /local_path/image/cat.png
5 .무엇을 use 이 방법은 사용자의 실제 IP 주소를 전달합니다
프록시의 경우 Remote_addr은 사용자의 IP가 아닌 프록시의 IP를 얻습니다.
x-forwarded-for는 쉽게 변조됩니다
일반 해결 방법: 1단계 에이전트와 협상하여 x_real_ip 헤더 정보를 설정하여 사용자의 IP를 기록할 수 있습니다.set x_real_ip=$remote_addr
set x_real_ip=$remote_addr
6. Nginx中常见错误码
413:request entity too large
用户上传文件限制:client_max_body_size
502:bad gateway
后端服务无响应
504:gateway time-out
后端服务超时
二、Nginx性能优化
1. 性能优化考虑点
当前系统结构瓶颈
观察指标(top查看状态、日志等)、压力测试
了解业务模式
接口业务类型,系统层次化结构
性能与安全
配置防火墙太过于注重安全,会降低性能
2. ab接口压力测试工具
安装
yum install httpd-tools
使用
ab -n 2000 -c 2 http://127.0.0.1/
-n:总的请求数
-c:并发数
-k:是否开启长连接
3. 系统与Nginx性能优化
文件句柄
LinuxUnix一起皆文件,文件句柄就是一个索引
设置方式
- 系统全局性修改、用户局部性修改、进程局部性修改
系统全局性修改 和 用户局部性修改:
配置文件:/etc/security/limits.conf
# root:root用户 root soft nofile 65535 # hard 强制限制、soft 超过会发送提醒(邮件等),不限制 root hard nofile 65535 # *:所有用户 * soft nofile 65535 * hard nofile 65535
进程局部性修改
配置文件:/etc/nginx/nginx.conf
# 针对nginx进程进行设置 worker_rlimit_nofile 35535;
4. CPU的亲和
CPU亲和:将进程/线程与cpu绑定,最直观的好处就是提高了cpu cache的命中率,从而减少内存访问损耗,提高程序的速度。
物理CPU数量:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
CPU核心:
cat /proc/cpuinfo | grep "cpu cores" | uniq
核心和进程使用率:先按
top
,再按1
# /etc/nginx/nginx.conf # nginx建议数量跟cpu核心数保持一致 worker_processes 2; # 配置cpu亲和 worker_cpu_affinity 0000000000000001 0000000000000010 # 与上一行等价,自动对应(Nginx1.9版本以上) worker_cpu_affinity auto
查看Nginx的cpu绑定情况:ps -eo pid,args,psr | grep [n]ginx
사용자 업로드 파일 제한: client_max_body_size
502: 잘못된 게이트웨이
- 백엔드 서비스가 응답하지 않음
-
🎜504: 게이트웨이 시간 초과🎜🎜 🎜🎜🎜백엔드 서비스 timeout🎜🎜🎜🎜🎜 2. Nginx 성능 최적화🎜🎜1. 성능 최적화 고려 사항🎜🎜🎜🎜현재 시스템 구조 병목 현상🎜🎜🎜🎜🎜관찰 지표(상위 뷰 상태, 로그 등), 스트레스 테스트🎜🎜🎜🎜 🎜비즈니스 모델 이해🎜🎜🎜🎜🎜인터페이스 비즈니스 유형, 시스템 계층 구조🎜🎜🎜🎜🎜성능 및 보안🎜🎜🎜🎜🎜보안에 너무 많은 관심을 기울이는 방화벽을 구성하면 성능이 저하됩니다🎜🎜🎜🎜🎜 2. ab 인터페이스 압력 테스트 도구 🎜
- 🎜🎜install🎜🎜🎜🎜🎜
yum install httpd-tools
🎜🎜🎜🎜🎜use🎜🎜🎜🎜🎜ab -n 2000 -c 2 http://127.0.0.1/🎜🎜🎜🎜-n: 총 요청 수🎜🎜🎜🎜-c: 동시성 수🎜🎜🎜🎜-k: 긴 연결을 활성화할지 여부🎜🎜🎜- 🎜🎜파일 핸들🎜🎜🎜🎜🎜LinuxUnix는 파일이고, 파일 핸들은 인덱스🎜🎜 🎜🎜🎜설정 방법🎜
# nginx服务使用nginx用户(最好不要使用root用户) user nginx; # cpu亲和(最好跟核心数保持一致) worker_processes 2; worker_cpu_affinity auto; # error的日志级别设置为warn error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; # 文件句柄对于进程间的限制(建议1w以上) worker_rlimit_nofile 35535; # 事件驱动器 events { use epoll; # 限制每一个worker_processes进程可以处理多少个连接 worker_connections 10240; } http { include /etc/nginx/mime.types; default_type application/octet-stream; #字符集(服务端响应发送的报文字符集) charset utf-8; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; # 静态资源的处理 sendfile on; #tcp_nopush on; keepalive_timeout 65; # gzip压缩(对于IE6或以下版本对于gzip压缩支持不是很好) gzip on; # IE6或以下不进行压缩(兼容) gzip_disable "MSIE [1-6]\."; gzip_http_version 1.1; include /etc/nginx/conf.d/*.conf; }
🎜🎜시스템 전역 수정 및 사용자 로컬 수정: 🎜🎜구성 파일: 🎜/etc/security/limits.conf
🎜# 文件上传漏洞解决办法 location ^~ /upload { root /opt/app/images; if ($request_file ~* (.*)\.php){ return 403; } }
🎜로컬 수정 처리 🎜🎜 구성 파일: 🎜/etc/nginx/nginx.conf
🎜# /etc/nginx/nginx.conf lua_package_path "/etc/nginx/waf/?.lua"; lua_shared_dict limit 10m; init_by_lua_file /etc/nginx/waf/init.lua; access_by_lua_file /etc/nginx/waf/waf.lua
🎜4. CPU 선호도🎜🎜🎜CPU 선호도: 🎜프로세스/스레드를 CPU에 바인딩하면 가장 직관적인 이점은 CPU 캐시는 효율성을 높여 메모리 액세스 손실을 줄이고 프로그램 속도를 향상시킵니다. 🎜🎜🎜🎜물리적 CPU 번호:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
🎜🎜🎜🎜CPU 코어:cat /proc/cpuinfo | grep "cpu cores" | CPU 바인딩 상황: 🎜🎜<code>ps -eo pid,args,psr | grep [n]ginx
🎜🎜5. Nginx 일반 구성 최적화🎜rrreee🎜3. 일반적인 악성 동작🎜 🎜🎜🎜크롤링 행위와 악의적인 크롤링 및 리소스 도용🎜🎜🎜🎜🎜기본 안티 핫링크 기능으로 악의적인 사용자가 웹사이트의 외부 데이터를 쉽게 크롤링하는 것을 방지합니다.🎜🎜🎜🎜secure_link_module, 데이터 보안 및 암호화 확인 및 효율성을 향상시켜 핵심에 적합합니다. 중요한 데이터🎜🎜🎜🎜acces_module은 백그라운드 데이터와 일부 사용자 서비스에 대한 IP 방지 및 제어를 제공합니다🎜
2. 常见的攻击手段
后台密码撞库,通过猜测密码字典不断对后台系统尝试性登录,获取后台登录密码
后台登录密码复杂度
access_module,对后台提供IP防控
预警机制(一个IP在一段时间内重复不断请求等)
3. 文件上传漏洞
利用一些可以上传的接口将恶意代码植入到服务器中,再通过url去访问以执行代码
例:http://www.rona1do.top/upload...(Nginx将1.jpg作为php代码执行)
# 文件上传漏洞解决办法 location ^~ /upload { root /opt/app/images; if ($request_file ~* (.*)\.php){ return 403; } }
4. SQL注入
利用未过滤/未审核用户输入的攻击方法,让应用运行本不应该运行的SQL代码
Nginx+LUA配置WAF防火墙防止SQL注入
ngx_lua_waf 下载地址
使用waf步骤:
git clone https://github.com/loveshell/ngx_lua_waf.git
cd ngx_lua_waf
mv ngx_lua_waf /etc/nginx/waf
vim /etc/nginx/waf/conf.lua
,修改RulePath为对应路径(/etc/nginx/waf/wafconf)vim /etc/nginx/waf/wafconf/post
,加入一行,\sor\s+
,放sql注入的正则集成waf:
# /etc/nginx/nginx.conf lua_package_path "/etc/nginx/waf/?.lua"; lua_shared_dict limit 10m; init_by_lua_file /etc/nginx/waf/init.lua; access_by_lua_file /etc/nginx/waf/waf.lua
reload Nginx
5. 复杂的访问攻击中CC攻击
waf/conf.lua
配置文件中打开防cc攻击配置项CCDeny="on"
CCrate="100/60" #每60秒100次请求
四、Nginx总结
定义Nginx在服务体系中的角色
静态资源服务
代理服务
动静分离
设计评估
LVS、keepalive、syslog、Fastcgi
用户权限、日志目录存放
CPU、内存、硬盘
硬件
系统
关联服务
配置注意事项
合理配置
了解原理(HTTP、操作系统...)
关注日志
相关推荐:
위 내용은 Nginx 아키텍처 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

本篇文章给大家带来了关于nginx的相关知识,其中主要介绍了nginx拦截爬虫相关的,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

高并发系统有三把利器:缓存、降级和限流;限流的目的是通过对并发访问/请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页)、排队等待(秒杀)、降级(返回兜底数据或默认数据);高并发系统常见的限流有:限制总并发数(数据库连接池)、限制瞬时并发数(如nginx的limit_conn模块,用来限制瞬时并发连接数)、限制时间窗口内的平均速率(nginx的limit_req模块,用来限制每秒的平均速率);另外还可以根据网络连接数、网络流量、cpu或内存负载等来限流。1.限流算法最简单粗暴的

实验环境前端nginx:ip192.168.6.242,对后端的wordpress网站做反向代理实现复杂均衡后端nginx:ip192.168.6.36,192.168.6.205都部署wordpress,并使用相同的数据库1、在后端的两个wordpress上配置rsync+inotify,两服务器都开启rsync服务,并且通过inotify分别向对方同步数据下面配置192.168.6.205这台服务器vim/etc/rsyncd.confuid=nginxgid=nginxport=873ho

nginx php403错误的解决办法:1、修改文件权限或开启selinux;2、修改php-fpm.conf,加入需要的文件扩展名;3、修改php.ini内容为“cgi.fix_pathinfo = 0”;4、重启php-fpm即可。

跨域是开发中经常会遇到的一个场景,也是面试中经常会讨论的一个问题。掌握常见的跨域解决方案及其背后的原理,不仅可以提高我们的开发效率,还能在面试中表现的更加

nginx禁止访问php的方法:1、配置nginx,禁止解析指定目录下的指定程序;2、将“location ~^/images/.*\.(php|php5|sh|pl|py)${deny all...}”语句放置在server标签内即可。

nginx部署react刷新404的解决办法:1、修改Nginx配置为“server {listen 80;server_name https://www.xxx.com;location / {root xxx;index index.html index.htm;...}”;2、刷新路由,按当前路径去nginx加载页面即可。

linux版本:64位centos6.4nginx版本:nginx1.8.0php版本:php5.5.28&php5.4.44注意假如php5.5是主版本已经安装在/usr/local/php目录下,那么再安装其他版本的php再指定不同安装目录即可。安装php#wgethttp://cn2.php.net/get/php-5.4.44.tar.gz/from/this/mirror#tarzxvfphp-5.4.44.tar.gz#cdphp-5.4.44#./configure--pr


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版
시각적 웹 개발 도구
