国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > Nginx > 正文

Linux服務器下nginx的安全配置詳解

2024-08-30 12:25:59
字體:
供稿:網(wǎng)友

Nginx是一個輕量級,高性能的Web服務器/反向代理和電子郵件 代理(IMAP/POP3),它可以運行在UNIX,GNU/Linux,BSD變種,MAC OS X,Solaris和Microsoft Windows上。根據(jù)Netcraft的調(diào)查數(shù)據(jù)顯示,互聯(lián)網(wǎng)上6%的域名都使用了Nginx Web服務器。Nginx是解決C10K問題的服務器之一,與傳統(tǒng)服務器不一樣,Nginx不依賴于線程處理請求,相反,它使用了一個更具擴展性的事件驅(qū) 動(異步)架構(gòu)。Nginx在很多高流量網(wǎng)站上得到了應用,如WordPress,Hulu,Github和SourceForge。

1、一些常識

linux下,要讀取一個文件,首先需要具有對文件所在文件夾的執(zhí)行權(quán)限,然后需要對文件的讀取權(quán)限。 php文件的執(zhí)行不需要文件的執(zhí)行權(quán)限,只需要nginx和php-fpm運行賬戶的讀取權(quán)限。 上傳木馬后,能不能列出一個文件夾的內(nèi)容,跟php-fpm的運行賬戶對文件夾的讀取權(quán)限有關,木馬執(zhí)行命令的權(quán)限跟php-fpm的賬戶權(quán)限有關。 如果木馬要執(zhí)行命令,需要php-fpm的賬戶對相應的sh有執(zhí)行權(quán)限。 讀取一個文件夾內(nèi)的文件,是不需要對文件夾有讀取權(quán)限的,只需要對文件夾有執(zhí)行權(quán)限。

1、頂部配置

#定義 Nginx 運行的用戶和用戶組user nginx; #進程文件pid /var/run/nginx.pid; #錯誤日志位置和級別,debug、info、notice、warn、error、criterror_log /var/log/nginx/error.log warn; #Nginx worker 的進程數(shù),一般可設置為可用的CPU內(nèi)核數(shù)。worker_processes 8; #每個 worker 打開文件描述符的最大數(shù)量限制。理論值應該是最多打開文件數(shù)(系統(tǒng)的值ulimit -n)與 nginx 進程數(shù)相除,但是 nginx 分配請求并不均勻,所以建議與ulimit -n的值保持一致。worker_rlimit_nofile 65535;

2、Events 模塊

events {  #設置一個worker進程同時打開的最大連接數(shù)  worker_connections 2048;   #告訴nginx收到一個新連接通知后接受盡可能多的連接  multi_accept on;   #設置用于復用客戶端線程的輪詢方法。如果你使用Linux 2.6+,你應該使用epoll。如果你使用*BSD,你應該使用kqueue。  use epoll;}

3、HTTP 模塊

http {  #隱藏 Nginx 的版本號,提高安全性。  server_tokens off;   #開啟高效文件傳輸模式,sendfile 指令指定 Nginx 是否調(diào)用sendfile 函數(shù)來輸出文件,對于普通應用設為 on,如果用來進行下載等應用磁盤 IO 重負載應用,可設置為 off,以平衡磁盤與網(wǎng)絡 I/O 處理速度,降低系統(tǒng)的負載。  sendfile on;   #是否開啟目錄列表訪問,默認關閉。  autoindex off;   #告訴 Nginx 在一個數(shù)據(jù)包里發(fā)送所有頭文件,而不一個接一個的發(fā)送  tcp_nopush on;   #告訴 Nginx 不要緩存數(shù)據(jù),而是一段一段的發(fā)送--當需要及時發(fā)送數(shù)據(jù)時,就應該給應用設置這個屬性,這樣發(fā)送一小塊數(shù)據(jù)信息時就不能立即得到返回值。Nginx 默認會始終工作在 tcp nopush 狀態(tài)下。但是當開啟前面的 sendfile on; 時,它的工作特點是 nopush 的最后一個包會自動轉(zhuǎn)轉(zhuǎn)換到 nopush off。為了減小那200ms的延遲,開啟 nodelay on; 將其很快傳送出去。結(jié)論就是 sendfile on; 開啟時,tcp_nopush 和 tcp_nodelay 都是on 是可以的。  tcp_nodelay on;   #日志格式設定  log_format main '$remote_addr - $remote_user [$time_local] "$request" '  '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent" "$http_x_forwarded_for"';  #定義訪問日志,設置為 off 可以關閉日志,提高性能  access_log /var/log/nginx/access.log main;    #連接超時時間,單位是秒  keepalive_timeout 120;   #讀取HTTP頭部的超時時間,默認值 60??蛻舳伺c服務器建立連接后將開始接收HTTP頭部,在這個過程中,如果在一個時間間隔(超時時間)內(nèi)沒有讀取到客戶端發(fā)來的字節(jié),則認為超時,并向客戶端返回408 ("Request timed out")響應。  client_header_timeout 60;   #默認值 60。與client_header_timeout相似,只是這個超時時間只在讀取HTTP包體時才有效。  client_body_timeout 10;   #發(fā)送響應的超時時間,默認值 60。即Nginx服務器向客戶端發(fā)送了數(shù)據(jù)包,但客戶端一直沒有去接收這個數(shù)據(jù)包。如果某個連接超過send_timeout定義的超時時間,那么Nginx將會關閉這個連接。  send_timeout 60;   #連接超時后將通過向客戶端發(fā)送RST包來直接重置連接。這個選項打開后,Nginx會在某個連接超時后,不是使用正常情形下的四次握手關閉TCP連接,而是直接向用戶發(fā)送RST重置包,不再等待用戶的應答,直接釋放Nginx服務器上關于這個套接字使用的所有緩存(如TCP滑動窗口)。相比正常的關閉方式,它使得服務器避免產(chǎn)生許多處于FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT狀態(tài)的TCP連接。注意,使用RST重置包關閉連接會帶來一些問題,默認情況下不會開啟。  reset_timedout_connection off;   #要限制連接,必須先有一個容器對連接進行計數(shù),"zone=" 是給它一個名字,可以隨便叫,這個名字要跟下面的 limit_conn 一致。$binary_remote_addr 用二進制來儲存客戶端的地址,1m 可以儲存 32000 個并發(fā)會話。  limit_conn_zone $binary_remote_addr zone=addr:5m;   #給定的key設置最大連接數(shù)。這里key是addr,我們設置的值是100,也就是說我們允許每一個IP地址最多同時打開有100個連接。  limit_conn addr 100;   #對每個連接限速100k。這如果一個IP允許兩個并發(fā)連接,那么這個IP就是限速200K。  limit_rate 100k;   #include 是一個在當前文件中包含另一個文件內(nèi)容的指令。這里我們使用它來加載文件擴展名與文件類型映射表。nginx根據(jù)映射關系,設置http請求響應頭的Content-Type值。當在映射表找不到時,使用nginx.conf中default-type指定的默認值。  include /etc/nginx/mime.types;   #設置文件使用的默認的MIME-type  default_type text/html;   #默認編碼  charset UTF-8;   #該模塊可以讀取預先壓縮的gz文件,這樣可以減少每次請求進行g(shù)zip壓縮的CPU資源消耗。該模塊啟用后,nginx首先檢查是否存在請求靜態(tài)文件的gz結(jié)尾的文件,如果有則直接返回該gz文件內(nèi)容。  gzip_static off;    #開啟 gzip 壓縮。  gzip on;   # 禁用客戶端為 IE6 時的 gzip功能。  gzip_disable "msie6";   #Nginx做為反向代理的時候啟用??蛇x值:off|expired|no-cache|no-sotre|private|no_last_modified|no_etag|auth|any  gzip_proxied any;   #設置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭中的Content-Length中進行獲取。建議設置成大于1k的字節(jié)數(shù),小于1k可能會越壓越大。  gzip_min_length 1024;   #設置數(shù)據(jù)的壓縮等級。這個等級可以是1-9之間的任意數(shù)值,9是最慢但是壓縮比最大的。  gzip_comp_level 5;   #設置系統(tǒng)獲取幾個單位的緩存用于存儲gzip的壓縮結(jié)果數(shù)據(jù)流。 例如 4 4k 代表以4k為單位,按照原始數(shù)據(jù)大小以4k為單位的4倍申請內(nèi)存。如果沒有設置,默認值是申請跟原始數(shù)據(jù)相同大小的內(nèi)存空間去存儲gzip壓縮結(jié)果。  gzip_buffers 4 16k;   #設置需要壓縮的數(shù)據(jù)格式。Nginx默認只對text/html進行壓縮。  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;   #為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數(shù)量,建議和打開文件數(shù)一致,inactive 是指經(jīng)過多長時間文件沒被請求后刪除緩存。  open_file_cache max=65535 inactive=30s;   #多長時間檢查一次緩存的有效信息  open_file_cache_valid 30s;   #open_file_cache指令中的inactive參數(shù)時間內(nèi)文件的最少使用次數(shù),如果超過這個數(shù)字,文件描述符一直是在緩存中打開的。出現(xiàn) Last-Modified 不變的情況,就是因為當nginx對一個靜態(tài)文件緩存后,如果30s內(nèi)還在訪問它,那么它的緩存就一直存在,直到30s內(nèi)你不訪問了為止。  open_file_cache_min_uses 2;  #是否記錄cache錯誤  open_file_cache_errors on;   include /etc/nginx/conf.d/*.conf;  include /etc/nginx/sites-enabled/*;}            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 林甸县| 大竹县| 罗源县| 二连浩特市| 江安县| 长岭县| 阳新县| 福鼎市| 舒城县| 西昌市| 营口市| 鹤壁市| 昌黎县| 宜章县| 无为县| 达孜县| 视频| 沙雅县| 旌德县| 团风县| 醴陵市| 高要市| 虎林市| 噶尔县| 梓潼县| 肥东县| 涞源县| 化州市| 五峰| 禄丰县| 东明县| 兰坪| 淳化县| 遂溪县| 疏附县| 北宁市| 视频| 东兰县| 明光市| 长丰县| 滦南县|