溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nginx常見(jiàn)問(wèn)題整理和解決辦法

發(fā)布時(shí)間:2020-09-02 11:43:26 來(lái)源:腳本之家 閱讀:145 作者:Awebone 欄目:服務(wù)器

以下就是我們整理的nginx常見(jiàn)的問(wèn)題,解決辦法我們例舉了1-2種,大家可以都測(cè)試下。

常見(jiàn)問(wèn)題

問(wèn)題一:相同server_name多個(gè)虛擬主機(jī)優(yōu)先級(jí)訪問(wèn)

server{
 listen 80;
 server_name server1;
 location{...}
}
server{
 listen 80;
 server_name server2;
 location{...}
}

解決方法:

配置兩個(gè)conf文件:server1.conf 和 server2.conf

根據(jù)Linux系統(tǒng)中文件順序讀取

問(wèn)題二:location匹配優(yōu)先級(jí)

location = /code1/ {
 rewrite ^(.*)$ /code1/index.html break;
}
location ~ /code.* {
 rewrite ^(.*)$ /code3/index.html break;
}
location ^~ /code {
 rewrite ^(.*)$ /code2/index.html break;
}

知識(shí)填坑:

=:進(jìn)行普通字符精確匹配,完全匹配

^~:普通字符匹配,使用前綴匹配

~ \~*:表示執(zhí)行一個(gè)正則匹配()

解決方法:

根據(jù)匹配找到最優(yōu)匹配

優(yōu)先級(jí):完全匹配>正則匹配>前綴匹配

問(wèn)題三:try_files使用

location / {
 try_files $uri $uri/ /index.html;
}

解決方法:

按順序檢查文件是否存在

問(wèn)題四:Nginx的alias和root區(qū)別

location /request_path/img/ {
 root /local_path/img/;
}
location /request_path/img/ {
 alias /local_path/img/;
}

解決方法:

root設(shè)置,最終請(qǐng)求的路徑為/local_path/img/request_path/img/

alias設(shè)置,最終請(qǐng)求為/local_path/img/

問(wèn)題五:通過(guò)多層代理,傳遞用戶真實(shí)IP

解決方法:

set x_real_ip=$remote_addr
$x_real_ip=真實(shí)IP

性能優(yōu)化問(wèn)題

優(yōu)化考慮點(diǎn):

當(dāng)前系統(tǒng)結(jié)構(gòu)瓶頸,如觀察指標(biāo)、壓力測(cè)試

了解業(yè)務(wù)模式,如接口業(yè)務(wù)類型、系統(tǒng)層次化結(jié)構(gòu)

性能與安全

接口壓力測(cè)試工具:ab

安裝:yum install httpd-tools

使用:ab -n 2000 -c 20 http://127.0.0.1/

nginx關(guān)于系統(tǒng)的優(yōu)化點(diǎn):

網(wǎng)絡(luò)、系統(tǒng)、服務(wù)、程序、數(shù)據(jù)庫(kù)

控制文件句柄數(shù)量,文件句柄就是一個(gè)索引

CPU親和,使進(jìn)程不會(huì)在處理器間頻繁遷移,減少性能損耗

vim /etc/nginx/nginx.conf
user nginx;
worker_processes 16;
worker_cpu_affinity auto;
worker_rlimit_nofile 15535;
events{
 use epoll;
 worker_connections 10240;
}
http{
 include /etc/nginx/mime.types;
 default_type application/octet-stream;
 #Charset
 charset utf-8;
 log_format main '';
 access_log /var/log/nginx/access.log main;
 #Core module
 sendfile on;
 keepalive_timeout 65;
 #Gzip module
 gzip on;
 gzip_disable "MSIE [1-6]\.";
 gzip_http_version 1.1;
 #Virtal server
 include /etc/nginx/conf.d/*.conf;
}

nginx安全問(wèn)題及防范策略

惡意行為

問(wèn)題:爬蟲(chóng)行為和惡意抓取、資源盜用

解決方法:

基礎(chǔ)防盜鏈功能:不讓惡意用戶輕易的爬取網(wǎng)站對(duì)外數(shù)據(jù)

secure_link_module模塊:對(duì)數(shù)據(jù)安全性提高加密驗(yàn)證和失效性,對(duì)一些重要數(shù)據(jù)使用

access_module模塊:對(duì)后臺(tái)、部分用戶服務(wù)的數(shù)據(jù)提供IP監(jiān)控,如規(guī)定IP等

應(yīng)用層攻擊

問(wèn)題一:后臺(tái)密碼撞庫(kù),通過(guò)密碼字典不斷對(duì)后臺(tái)系統(tǒng)登錄性嘗試,獲取后臺(tái)密碼

解決方法:

后臺(tái)密碼復(fù)雜的,大小寫(xiě)數(shù)字字符等

預(yù)警機(jī)制,同一IP的頻繁訪問(wèn)

access_module模塊:對(duì)后臺(tái)、部分用戶服務(wù)的數(shù)據(jù)提供IP監(jiān)控

問(wèn)題二:文件上傳漏洞,利用可以上傳的接口將惡意代碼植入服務(wù)器中,再通過(guò)url訪問(wèn)以執(zhí)行

解決方法:

針對(duì)一些木馬和后綴等做一定的處理

location ^~ /upload{
 root /usr/share/html;
 if($request_filename ~*(.*)\.php){
  return 403; #拒絕訪問(wèn)
 }
}

問(wèn)題三:SQL注入,利用未過(guò)濾或未審核的用戶輸入的攻擊手段,讓?xiě)?yīng)用運(yùn)行本不應(yīng)該運(yùn)行的SQL代碼

解決方法:

針對(duì)' or 1=1 #等常見(jiàn)注入代碼進(jìn)行檢測(cè)

搭建安全waf,針對(duì)滲透規(guī)則寫(xiě)正則表達(dá)式

nginx防攻擊策略

使用nginx+Lua搭建安全waf防火墻

防火墻功能:

攔截Cookie類型攻擊

攔截異常post請(qǐng)求

攔截cc攻擊,頻繁訪問(wèn)

攔截URL,不想暴露的接口

攔截arg參數(shù)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI