① 常用的web伺服器有哪些特點
1. Apache:屬於重量級web伺服器(重量級主要是在軟體包的大小上比較大,軟體的耦合度大),但是速度、性能不及其他輕量級web伺服器,並且消費內存較高。使用傳統的select模型,比較穩定的Prefork模式為多進程模式,需要經常派生子進程。所以消耗的cpu等伺服器資源比較大。
2. Lighttpd:輕量級web伺服器,cpu佔用低,效能好,模塊豐富。
3. Tomcat:運行:Servlet和Jsp web的應用軟體的容器,靜態和高並發處理弱。
4. Nginx:輕量級,高性能http和反向代理伺服器。高並發連接達到2-4萬個,內存、cpu等系統資源消耗低。Rewrite重寫規則(根據域名,URL的不同將HTTP請求分到不同的後端伺服器群組),內置的健康檢查功能(Nginx Proxy 後端的某台web伺服器宕機也不會影響前端訪問),節省帶寬(支持GZIP壓縮,可以添加瀏覽器本地緩存的Header頭)。
常用的Web伺服器有IIS、Apache、Tomcat、Jboss、Resin、Weblogic、WebSpher
② 什麼是GZIP壓縮 網頁GZIP壓縮是什麼意思
這一般是指WWW伺服器中安裝的一個功能,當有人來訪問這個伺服器中的網站時,伺服器中的這個功能就將網頁內容壓縮後傳輸到來訪的電腦瀏覽器中顯示出來.一般對純文本內容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點擊網址後會很快的顯示出來.當然這也會增加伺服器的負載.
一般伺服器中都安裝有這個功能模塊的.
③ 如何判斷web伺服器開啟了gzip或delaft
當Web伺服器接收到瀏覽器的HTTP請求後,就可以檢查瀏覽器是否支持。通過查看HTTP頭,可以快速判斷使用的客戶端瀏覽器是否支持接受gzip壓縮。若發送的HTTP頭中出現以下信息,則表明瀏覽器支持接受相應的gzip壓縮:
Accept-Encoding: gzip 支持mod_gzip
Accept-Encoding: deflate 支持mod_deflate
Accept-Encoding: gzip,deflate 同時支持mod_gzip 和mod_deflate
④ 安全開發運維必備的Nginx代理Web伺服器性能優化與安全加固配置
為了更好的指導部署與測試藝術升系統nginx網站伺服器高性能同時下安全穩定運行,需要對nginx服務進行調優與加固;
本次進行Nginx服務調優加固主要從以下幾個部分:
本文檔僅供內部使用,禁止外傳,幫助研發人員,運維人員對系統長期穩定的運行提供技術文檔參考。
Nginx是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx作為負載均衡伺服器, Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作為 HTTP代理伺服器對外進行服務。
Nginx版本選擇:
項目結構:
Nginx文檔幫助: http://nginx.org/en/docs/
Nginx首頁地址目錄: /usr/share/nginx/html
Nginx配置文件:
localtion 請求匹配的url實是一個正則表達式:
Nginx 匹配判斷表達式:
例如,匹配末尾為如下後綴的靜態並判斷是否存在該文件, 如不存在則404。
查看可用模塊編譯參數:http://nginx.org/en/docs/configure.html
http_gzip模塊
開啟gzip壓縮輸出(常常是大於1kb的靜態文件),減少網路傳輸;
http_fastcgi_mole模塊
nginx可以用來請求路由到FastCGI伺服器運行應用程序由各種框架和PHP編程語言等。可以開啟FastCGI的緩存功能以及將靜態資源進行剝離,從而提高性能。
keepalive模塊
長連接對性能有很大的影響,通過減少CPU和網路開銷需要開啟或關閉連接;
http_ssl_mole模塊
Nginx開啟支持Https協議的SSL模塊
Linux內核參數部分默認值不適合高並發,Linux內核調優,主要涉及到網路和文件系統、內存等的優化,
下面是我常用的內核調優配置:
文件描述符
文件描述符是操作系統資源,用於表示連接、打開的文件,以及其他信息。NGINX 每個連接可以使用兩個文件描述符。
例如如果NGINX充當代理時,通常一個文件描述符表示客戶端連接,另一個連接到代理伺服器,如果開啟了HTTP 保持連接,這個比例會更低(譯註:為什麼更低呢)。
對於有大量連接服務的系統,下面的設置可能需要調整一下:
精簡模塊:Nginx由於不斷添加新的功能,附帶的模塊也越來越多,建議一般常用的伺服器軟體使用源碼編譯安裝管理;
(1) 減小Nginx編譯後的文件大小
(2) 指定GCC編譯參數
修改GCC編譯參數提高編譯優化級別穩妥起見採用 -O2 這也是大多數軟體編譯推薦的優化級別。
GCC編譯參數優化 [可選項] 總共提供了5級編譯優化級別:
常用編譯參數:
緩存和壓縮與限制可以提高性能
NGINX的一些額外功能可用於提高Web應用的性能,調優的時候web應用不需要關掉但值得一提,因為它們的影響可能很重要。
簡單示例:
1) 永久重定向
例如,配置 http 向 https 跳轉 (永久)
nginx配置文件指令優化一覽表
描述:Nginx因為安全配置不合適導致的安全問題,Nginx的默認配置中存在一些安全問題,例如版本號信息泄露、未配置使用SSL協議等。
對Nginx進行安全配置可以有效的防範一些常見安全問題,按照基線標准做好安全配置能夠減少安全事件的發生,保證採用Nginx伺服器系統應用安全運行;
Nginx安全配置項:
溫馨提示: 在修改相應的源代碼文件後需重新編譯。
設置成功後驗證:
應配置非root低許可權用戶來運行nginx服務,設置如下建立Nginx用戶組和用戶,採用user指令指運行用戶
加固方法:
我們應該為提供的站點配置Secure Sockets Layer Protocol (SSL協議),配置其是為了數據傳輸的安全,SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密。
不應使用不安全SSLv2、SSLv3協議即以下和存在脆弱性的加密套件(ciphers), 我們應該使用較新的TLS協議也應該優於舊的,並使用安全的加密套件。
HTTP Referrer Spam是垃圾信息發送者用來提高他們正在嘗試推廣的網站的互聯網搜索引擎排名一種技術,如果他們的垃圾信息鏈接顯示在訪問日誌中,並且這些日誌被搜索引擎掃描,則會對網站排名產生不利影響
加固方法:
當惡意攻擊者採用掃描器進行掃描時候利用use-agent判斷是否是常用的工具掃描以及特定的版本,是則返回錯誤或者重定向;
Nginx支持webdav,雖然默認情況下不會編譯。如果使用webdav,則應該在Nginx策略中禁用此規則。
加固方法: dav_methods 應設置為off
當訪問一個特製的URL時,如"../nginx.status",stub_status模塊提供一個簡短的Nginx伺服器狀態摘要,大多數情況下不應啟用此模塊。
加固方法:nginx.conf文件中stub_status不應設置為:on
如果在瀏覽器中出現Nginx自動生成的錯誤消息,默認情況下會包含Nginx的版本號,這些信息可以被攻擊者用來幫助他們發現伺服器的潛在漏洞
加固方法: 關閉"Server"響應頭中輸出的Nginx版本號將server_tokens應設置為:off
client_body_timeout設置請求體(request body)的讀超時時間。僅當在一次readstep中,沒有得到請求體,就會設為超時。超時後Nginx返回HTTP狀態碼408(Request timed out)。
加固方法:nginx.conf文件中client_body_timeout應設置為:10
client_header_timeout設置等待client發送一個請求頭的超時時間(例如:GET / HTTP/1.1)。僅當在一次read中沒有收到請求頭,才會設為超時。超時後Nginx返回HTTP狀態碼408(Request timed out)。
加固方法:nginx.conf文件中client_header_timeout應設置為:10
keepalive_timeout設置與client的keep-alive連接超時時間。伺服器將會在這個時間後關閉連接。
加固方法:nginx.conf文件中keepalive_timeout應設置為:55
send_timeout設置客戶端的響應超時時間。這個設置不會用於整個轉發器,而是在兩次客戶端讀取操作之間。如果在這段時間內,客戶端沒有讀取任何數據,Nginx就會關閉連接。
加固方法:nginx.conf文件中send_timeout應設置為:10
GET和POST是Internet上最常用的方法。Web伺服器方法在RFC 2616中定義禁用不需要實現的可用方法。
加固方法:
limit_zone 配置項限制來自客戶端的同時連接數。通過此模塊可以從一個地址限制分配會話的同時連接數量或特殊情況。
加固方法:nginx.conf文件中limit_zone應設置為:slimits $binary_remote_addr 5m
該配置項控制一個會話同時連接的最大數量,即限制來自單個IP地址的連接數量。
加固方法:nginx.conf 文件中 limit_conn 應設置為: slimits 5
加固方法:
加固方法:
解決辦法:
描述後端獲取Proxy後的真實Client的IP獲取需要安裝--with-http_realip_mole,然後後端程序採用JAVA(request.getAttribute("X-Real-IP"))進行獲取;
描述: 如果要使用geoip地區選擇,我們需要再nginx編譯時加入 --with-http_geoip_mole 編譯參數。
描述: 為了防止外部站點引用我們的靜態資源,我們需要設置那些域名可以訪問我們的靜態資源。
描述: 下面收集了Web服務中常規的安全響應頭, 它可以保證不受到某些攻擊,建議在指定的 server{} 代碼塊進行配置。
描述: 為了防止某些未備案的域名或者惡意鏡像站域名綁定到我們伺服器上, 導致伺服器被警告關停,將會對業務或者SEO排名以及企業形象造成影響,我們可以通過如下方式進行防範。
執行結果:
描述: 有時你的網站可能只需要被某一IP或者IP段的地址請求訪問,那麼非白名單中的地址訪問將被阻止訪問, 我們可以如下配置;
常用nginx配置文件解釋:
(1) 阿里巴巴提供的Concat或者Google的PageSpeed模塊實現這個合並文件的功能。
(2) PHP-FPM的優化
如果您高負載網站使用PHP-FPM管理FastCGI對於PHP-FPM的優化非常重要
(3) 配置Resin on Linux或者Windows為我們可以打開 resin-3.1.9/bin/httpd.sh 在不影響其他代碼的地方加入:-Dhttps.protocols=TLSv1.2, 例如
原文地址: https://blog.weiyigeek.top/2019/9-2-122.html