摘要:架構(gòu)篇一常見問題相同多個虛擬主機(jī)優(yōu)先級訪問三個配置文件配置上述相同的三個虛擬主機(jī),會先訪問,訪問的優(yōu)先級是按照服務(wù)器的讀取順序,即文件名的排序。
Nginx-架構(gòu)篇 一、Nginx常見問題 1. 相同server_name多個虛擬主機(jī)優(yōu)先級訪問
# 三個配置文件: # 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的三個虛擬主機(jī),會先訪問testserver1,訪問的優(yōu)先級是按照服務(wù)器的讀取順序,即文件名的排序。2. location匹配優(yōu)先級
=:進(jìn)行普通字符精確匹配,也就是完全匹配
^~:表示普通字符匹配,使用前綴匹配
~ ~ :表示執(zhí)行一個正則匹配(加不區(qū)分大小寫)
上述優(yōu)先級自上而下優(yōu)先級降低,前兩個匹配是精確匹配,匹配到以后就不再往下找,正則匹配匹配到相應(yīng)的字符串也會繼續(xù)往下尋找是否有更精確的匹配。3. Nginx的try_files的使用
按順序檢查文件是否存在
# 先檢查對應(yīng)的url地址下的文件存不存在,如果不存在找/index.php,類似于重定向 location / { try_file $uri /index.php; }4. Nginx的alias和root區(qū)別
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.png5. 用什么樣的方法傳遞用戶的真實(shí)IP地址
在有代理的情況下,remote_addr獲取的是代理的ip,不是用戶的ip
x-forwarded-for容易被篡改
通用解決辦法: 可以跟第一級代理協(xié)商,設(shè)置頭信息x_real_ip記錄用戶的ip6. Nginx中常見錯誤碼
set x_real_ip=$remote_addr
413:request entity too large
用戶上傳文件限制:client_max_body_size
502:bad gateway
后端服務(wù)無響應(yīng)
504:gateway time-out
后端服務(wù)超時
二、Nginx性能優(yōu)化 1. 性能優(yōu)化考慮點(diǎn)
當(dāng)前系統(tǒng)結(jié)構(gòu)瓶頸
觀察指標(biāo)(top查看狀態(tài)、日志等)、壓力測試
了解業(yè)務(wù)模式
接口業(yè)務(wù)類型,系統(tǒng)層次化結(jié)構(gòu)
性能與安全
配置防火墻太過于注重安全,會降低性能
2. ab接口壓力測試工具
安裝
yum install httpd-tools
使用
ab -n 2000 -c 2 http://127.0.0.1/
-n:總的請求數(shù)
-c:并發(fā)數(shù)
-k:是否開啟長連接
3. 系統(tǒng)與Nginx性能優(yōu)化
文件句柄
LinuxUnix一起皆文件,文件句柄就是一個索引
設(shè)置方式
- 系統(tǒng)全局性修改、用戶局部性修改、進(jìn)程局部性修改
系統(tǒng)全局性修改 和 用戶局部性修改:
配置文件:/etc/security/limits.conf
# root:root用戶 root soft nofile 65535 # hard 強(qiáng)制限制、soft 超過會發(fā)送提醒(郵件等),不限制 root hard nofile 65535 # *:所有用戶 * soft nofile 65535 * hard nofile 65535
進(jìn)程局部性修改
配置文件:/etc/nginx/nginx.conf
# 針對nginx進(jìn)程進(jìn)行設(shè)置 worker_rlimit_nofile 35535;4. CPU的親和
CPU親和:將進(jìn)程/線程與cpu綁定,最直觀的好處就是提高了cpu cache的命中率,從而減少內(nèi)存訪問損耗,提高程序的速度。
物理CPU數(shù)量:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
CPU核心:cat /proc/cpuinfo | grep "cpu cores" | uniq
核心和進(jìn)程使用率:先按top,再按1
# /etc/nginx/nginx.conf # nginx建議數(shù)量跟cpu核心數(shù)保持一致 worker_processes 2; # 配置cpu親和 worker_cpu_affinity 0000000000000001 0000000000000010 # 與上一行等價(jià),自動對應(yīng)(Nginx1.9版本以上) worker_cpu_affinity auto
查看Nginx的cpu綁定情況:
ps -eo pid,args,psr | grep [n]ginx
# nginx服務(wù)使用nginx用戶(最好不要使用root用戶) user nginx; # cpu親和(最好跟核心數(shù)保持一致) worker_processes 2; worker_cpu_affinity auto; # error的日志級別設(shè)置為warn error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; # 文件句柄對于進(jìn)程間的限制(建議1w以上) worker_rlimit_nofile 35535; # 事件驅(qū)動器 events { use epoll; # 限制每一個worker_processes進(jìn)程可以處理多少個連接 worker_connections 10240; } http { include /etc/nginx/mime.types; default_type application/octet-stream; #字符集(服務(wù)端響應(yīng)發(fā)送的報(bào)文字符集) 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; # 靜態(tài)資源的處理 sendfile on; #tcp_nopush on; keepalive_timeout 65; # gzip壓縮(對于IE6或以下版本對于gzip壓縮支持不是很好) gzip on; # IE6或以下不進(jìn)行壓縮(兼容) gzip_disable "MSIE [1-6]."; gzip_http_version 1.1; include /etc/nginx/conf.d/*.conf; }三、Nginx安全 1. 常見的惡意行為
爬蟲行為和惡意抓取、資源盜用
基礎(chǔ)防盜鏈功能,不讓惡意用戶能輕易的爬取網(wǎng)站對外數(shù)據(jù)
secure_link_module,對數(shù)據(jù)安全性提高加密驗(yàn)證和實(shí)效性,適合如核心重要數(shù)據(jù)
acces_module,對后臺、部分用戶服務(wù)的數(shù)據(jù)提供IP防控
2. 常見的攻擊手段
后臺密碼撞庫,通過猜測密碼字典不斷對后臺系統(tǒng)嘗試性登錄,獲取后臺登錄密碼
后臺登錄密碼復(fù)雜度
access_module,對后臺提供IP防控
預(yù)警機(jī)制(一個IP在一段時間內(nèi)重復(fù)不斷請求等)
3. 文件上傳漏洞利用一些可以上傳的接口將惡意代碼植入到服務(wù)器中,再通過url去訪問以執(zhí)行代碼
例:http://www.rona1do.top/upload...(Nginx將1.jpg作為php代碼執(zhí)行)
# 文件上傳漏洞解決辦法 location ^~ /upload { root /opt/app/images; if ($request_file ~* (.*).php){ return 403; } }4. SQL注入
利用未過濾/未審核用戶輸入的攻擊方法,讓應(yīng)用運(yùn)行本不應(yīng)該運(yùn)行的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為對應(yīng)路徑(/etc/nginx/waf/wafconf)
vim /etc/nginx/waf/wafconf/post,加入一行,sors+,放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. 復(fù)雜的訪問攻擊中CC攻擊
waf/conf.lua配置文件中打開防cc攻擊配置項(xiàng)
CCDeny="on"
CCrate="100/60" #每60秒100次請求
四、Nginx總結(jié)
定義Nginx在服務(wù)體系中的角色
靜態(tài)資源服務(wù)
代理服務(wù)
動靜分離
設(shè)計(jì)評估
硬件
CPU、內(nèi)存、硬盤
系統(tǒng)
用戶權(quán)限、日志目錄存放
關(guān)聯(lián)服務(wù)
LVS、keepalive、syslog、Fastcgi
配置注意事項(xiàng)
合理配置
了解原理(HTTP、操作系統(tǒng)...)
關(guān)注日志
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/30707.html
摘要:請求的多階段異步處理多階段異步處理請求與事件驅(qū)動架構(gòu)是密切相關(guān)的,也就是說,請求的多階段異步處理只能基于事件驅(qū)動架構(gòu)實(shí)現(xiàn)。 前言 最近在讀 Nginx 相關(guān)的書籍,做一下讀書筆記。 Nginx 作為業(yè)界知名的高性能服務(wù)器,被廣泛的應(yīng)用。它的高性能正是由于其優(yōu)秀的架構(gòu)設(shè)計(jì),其架構(gòu)主要包括這幾點(diǎn):模塊化設(shè)計(jì)、事件驅(qū)動架構(gòu)、請求的多階段異步處理、管理進(jìn)程與多工作進(jìn)程設(shè)計(jì)、內(nèi)存池的設(shè)計(jì),以下內(nèi)...
摘要:請求的多階段異步處理多階段異步處理請求與事件驅(qū)動架構(gòu)是密切相關(guān)的,也就是說,請求的多階段異步處理只能基于事件驅(qū)動架構(gòu)實(shí)現(xiàn)。 前言 最近在讀 Nginx 相關(guān)的書籍,做一下讀書筆記。 Nginx 作為業(yè)界知名的高性能服務(wù)器,被廣泛的應(yīng)用。它的高性能正是由于其優(yōu)秀的架構(gòu)設(shè)計(jì),其架構(gòu)主要包括這幾點(diǎn):模塊化設(shè)計(jì)、事件驅(qū)動架構(gòu)、請求的多階段異步處理、管理進(jìn)程與多工作進(jìn)程設(shè)計(jì)、內(nèi)存池的設(shè)計(jì),以下內(nèi)...
摘要:架構(gòu)篇一常見問題相同多個虛擬主機(jī)優(yōu)先級訪問三個配置文件配置上述相同的三個虛擬主機(jī),會先訪問,訪問的優(yōu)先級是按照服務(wù)器的讀取順序,即文件名的排序。 Nginx-架構(gòu)篇 一、Nginx常見問題 1. 相同server_name多個虛擬主機(jī)優(yōu)先級訪問 # 三個配置文件: # testserver1: server_name testserver1 www.rona1do.top; root...
閱讀 3563·2021-11-22 15:11
閱讀 4643·2021-11-18 13:15
閱讀 2710·2019-08-29 14:08
閱讀 3583·2019-08-26 13:49
閱讀 3100·2019-08-26 12:17
閱讀 3295·2019-08-26 11:54
閱讀 3119·2019-08-26 10:58
閱讀 2039·2019-08-26 10:21