㈠ Nginx+Keepalived實現web伺服器高可用
1、Nginx
業務背景
現公司需求快速搭建web伺服器,對外提供給用戶web服務。
需求拆分
需要基於http協議的軟體,搭建服務實現
介紹
常見用法:
1) web伺服器軟體 httpd http協議
同類的web伺服器軟體:apache(老牌) nginx(俄羅斯) IIS(微軟)
2)代理伺服器 反向代理
3)郵箱代理伺服器 IMAP POP3 SMTP
4)負載均衡功能 LB loadblance
Nginx架構的特點:
官方網址:http://nginx.org/
1.2、安裝
常見安裝方式:
編譯參數說明
1.3、目錄介紹
查看安裝目錄/usr/local/nginx
1.4、軟體操作參數
查看nginx的二進制可執行文件的相關參數
執行後顯示
一般主要使用:
2、Keepalived實現高可用
業務背景
單例web伺服器能夠滿足業務基本需求,提供web服務。但是,存在單點故障的問題,即當伺服器宕機後,用戶將無法獲取到服務響應。
為了能夠提高用戶體驗度,能夠持續得給用戶提供優質的服務,當web伺服器不可用時,可以有備用伺服器接替web伺服器的工作,繼續為用戶提供響應。其中,還要解決一個問題,需要備用伺服器能夠快速自動切換過來。
一般將以上業務需求,稱為實現服務的高可用HA。
需求拆分
也就是高可用的實現核心:
①冗餘伺服器(備份伺服器)
②自動切換 可以通過綁定虛擬IP的方式 用戶通過VIP訪問服務
2.1、介紹
Keepalived軟體起初是專為LVS負載均衡軟體設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟體外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟體。
keepalived主要使用三個模塊,分別是core、check和vrrp。
core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的載入和解析。
check負責 健康 檢查,包括常見的各種檢查方式。
vrrp模塊是來實現VRRP協議的。
2.2、安裝
master和backup都需要進行安裝,也就是server01和server03機器
keepalived需要使用的目錄和文件:
2.3、配置
①備份主備伺服器的配置文件
②分別修改主備伺服器配置文件
示例配置文件說明
主伺服器
備伺服器
③分別按照順序啟動主伺服器和備伺服器的keepalived
④查看主備伺服器的網卡信息
2.4、模擬故障
模擬伺服器故障宕機,查看是否可以切換服務到備用機器。
模擬宕機,關閉server01 master伺服器,VIP自動切換到server03 backup伺服器
㈡ 怎麼用nginx在windows上搭建web伺服器
怎麼用nginx在windows上搭建web伺服器解決方法
所需工具:
一台聯網的電腦
phpStudy 2014版
windows 2003 server sp2伺服器一台
1.phpstudy安裝在第四步時選擇Nginx&php
㈢ 【NGINX入門】2.Nginx搭建靜態資源web伺服器
本文講解Nginx安裝後,nginx搭建靜態資源web伺服器需要的配置內容包括location,gzip,帶寬限速等配置。
添加上圖中的配置後, 客戶端訪問 http://172.16.204.5:90/ 時, 會以樹的格式展示mine_html中的所有文件. 使用這種方式可以很好的共享靜態資源.
(1)Nginx系列教程(2)nginx搭建靜態資源web伺服器
https://yq.aliyun.com/articles/752950
㈣ 安全開發運維必備的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
㈤ web伺服器 Nginx
(1)概念
Web伺服器是一台使用HTTP協議與客戶機瀏覽器進行信息交流(因此又稱為HTTP伺服器)、為互聯網客戶提供服務(信息瀏覽,下載資源等)的主機。發展趨勢:從HTML到XML、從有線到無線、從無聲到有聲
1.Linux是架設安全高效Web伺服器的操作系統
架設Web伺服器常見的操作系統:Windows、Linux、Unix。Linux安全性能最高,可以支持多個硬體平台,可以根據不同需求隨意修改、調整與復制各種程序的源碼以及發布在互聯網上,網路功能比較強大。
2.目前主流伺服器:Apache、 Nginx、 IIS
Unix/Linux操作系統下使用最廣泛的免費HTTP伺服器:Apache、Nginx。Windows(NT/2000/2003)操作系統使用ⅡS,綜合使用最多的Web伺服器是 IIs、Apache。
選擇WEB伺服器應考慮的本身特性因素有:性能、安全性、日誌和統計、虛擬主機、代理伺服器、緩沖服務和集成應用程序等。下面介紹目前最主流的三大web伺服器:
① 大型
IIS:
微軟的Internet Information Services (IIS),IIS 允許在互聯網上發布信息,提供了一個圖形界面的管理工具,稱為Internet服務管理器,可用於監視配置和控制Internet服務。IIS是一種Web服務組件,其中包括Web伺服器(網頁瀏覽)、FTP伺服器(文件傳輸)、NNTP伺服器(新聞服務)和SMTP伺服器(郵件傳輸),使得在網路上發布信息很容易。它提供ISAPI(Intranet Server API)作為擴展Web伺服器功能的編程介面,它還提供一個Internet資料庫連接器,可以實現對資料庫的查詢和更新。
Apache:
Apache是世界上用的最多的Web伺服器,源於NCSAhttpd伺服器的補丁(pache 補丁)。它的成功之處主要在於:源代碼開放、有開放的開發隊伍、支持跨平台的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平台上)、可移植性。
② 小型
nginx:
nginx的模塊都是靜態編譯的,對fcgi的支持非常好,在處理鏈接的的方式上nginx支持epoll,支持通用語言介面(如:php、python、perl等),支持正向和反向代理、虛擬主機、url重寫、壓縮傳輸等。
(2)工作原理
當客戶端Web瀏覽器連到伺服器上並請求文件時,伺服器將處理該請求並將文件反饋到該瀏覽器上,附帶的信息會告訴瀏覽器如何查看該文件(即文件類型)。Web伺服器主要是處理向瀏覽器發送HTML以供瀏覽,而應用程序伺服器提供訪問商業邏輯的途徑以供客戶端應用程序使用。應用程序伺服器可以管理自己的資源,例如看大門的工作(gate-keeping ties)包括安全(security),事務處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web伺服器一樣,應用程序伺服器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。Web伺服器的工作原理一般可分成如下4個步驟:
① 連接過程:是Web伺服器和其瀏覽器之間所建立起來的一種連接。查看連接過程是否實現,用戶可以找到和打開socket這個虛擬文件,這個文件的建立意味著連接過程這一步驟已經成功建立。
② 請求過程:是Web的瀏覽器運用socket這個文件向其伺服器而提出各種請求。
③ 應答過程:是運用HTTP協議把在請求過程中所提出來的請求傳輸到Web的伺服器,進而實施任務處理,然後運用HTTP協議把任務處理的結果傳輸到Web的瀏覽器,同時在Web的瀏覽器上面展示上述所請求之界面。
④ 關閉連接:是當上一個步驟--應答過程完成以後,Web伺服器和其瀏覽器之間斷開連接之過程。Web伺服器上述4個步驟環環相扣、緊密相聯,邏輯性比較強,可以支持多個進程、多個線程以及多個進程與多個線程相混合的技術。
Web伺服器可以解析HTTP協議。當Web伺服器接收到一個HTTP請求(request),會返回一個HTTP響應(response)。為了處理一個request,Web伺服器可以response一個靜態頁面(HTML頁面)或圖片,進行頁面跳轉(redirect),或把動態響應委託給伺服器端。Web伺服器的代理模型非常簡單。當一個request被送到Web伺服器里來時,它只單純的把request傳遞給可以很好的處理request的程序(伺服器端腳本,如:CGI腳本,JSP腳本,servlets,ASP腳本,伺服器端JavaScript等)。Web伺服器僅僅提供一個可以執行伺服器端程序和返回(程序所產生的)響應的環境,而不會超出職能范圍。伺服器端程序功能通常有:事務處理、資料庫連接、和消息等。雖然Web伺服器不支持事務處理或資料庫連接池,但它可以配置各種策略來實現容錯性、可擴展性(如:負載平衡、緩沖)。集群特徵經常被誤認為僅僅是應用程序伺服器專有的特徵。
(3)配置
如何設置默認文檔;在同一台伺服器上架設多個Web站點;(可以通過改變埠號)創建Web虛擬目錄;
1、了解DNS主機名和IP地址。
如果此WEB伺服器在Internet上,需向ISP申請和注冊此伺服器的DNS主機名和IP地址。如果此伺服器只在企業網內使用,則在內部的DNS伺服器上注冊。
2、打開伺服器文檔,選擇"埠"-"Internet埠",啟用"TCP/ IP埠"。
3、選擇"Internet協議",完成以下選項後,保存文檔。
① 綁定主機名:
A、選擇"是"則您可在"主機名"項中輸入主機別名,WEB用戶可用此別名替代Domino伺服器名訪問WEB伺服器。
B、選擇"否"(預設)則不允許使用別名。
② DNS查詢: 選擇"是"則Domino伺服器查詢發送請求的WEB客戶機的DNS名。
③ Domino日誌文件和資料庫將包含WEB客戶機的DNS主機名: 選擇"否"(預設)則不查詢,Domino日誌文件和資料庫將只包含WEB客戶機的IP地址( 注意:選擇"否"將提高Domino伺服器性能,因為伺服器不使用資源執行DNS查詢 )
④ "允許HTTP客戶瀏覽資料庫":選擇"是"則允許WEB用戶在URL中使用OpenServer命令來顯示伺服器上資料庫列表。選擇"否"(預設)則不允許。但即使WEB用戶不能看到伺服器上資料庫列表,他們仍能打開有許可權訪問的單個資料庫。
4、啟動HTTP任務。在伺服器控制台上,輸入:loap http
小型項目
(1)概念
1、Nginx(俄羅斯程序設計師Igor Sysoev用C語言進行編寫)是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3/SMTP)代理伺服器。
2、特點:佔有內存少(在高連接並發的情況下,Nginx是Apache伺服器不錯的替代品,能夠支持高達 50,000 個並發連接數的響應),並發能力強。
3、中國大陸使用nginx網站用戶有:網路、京東、新浪、網易、騰訊、淘寶等。
4、Nginx代碼完全用C語言從頭寫成,已經移植到許多體系結構和操作系統,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。
5、Nginx有自己的函數庫,並且除了zlib、PCRE和OpenSSL之外,標准模塊只使用系統C庫函數。而且,如果不需要或者考慮到潛在的授權沖突,可以不使用這些第三方庫。
(2)安裝
官網:http://nginx.org/
選擇要安裝的版本:
(3)使用
打開conf/nginx.conf,修改埠號,和主頁根地址為:打包後index.html的目錄
模擬域名配置(本地域名設置):
在瀏覽器地址欄輸入配置好的「域名:埠號」回車:
㈥ 如何將 Nginx 配置為Web伺服器的方法
安裝護衛神.nginx大師,一鍵安裝nginx+php+mysql+ftp
㈦ 如何將 Nginx 配置為Web伺服器
Nginx 配置文件至少包含一個 server 命令 ,用來定義虛擬伺服器。當請求到來時, Nginx 會首先選擇一個虛擬伺服器來處理該請求。
虛擬伺服器定義在 http 上下文中的 server 中:
?
1
2
3
4
5
http {
server {
# Server configuration
}
}
注意: http 中可以定義多個 server
server 配置塊使用 listen 命令監聽本機 IP 和埠號(包括 Unix domain socket and path),支持 IPv4、IPv6,IPv6地址需要用方括弧括起來:
?
1
2
3
4
5
6
server {
listen 127.0.0.1:8080; # IPv4地址,8080埠
# listen [2001:3CA1:10F:1A:121B:0:0:10]:80; # IPv6地址,80埠
# listen [::]:80; # 聽本機的所有IPv4與IPv6地址,80埠
㈧ 如何架設Nginx+Php Web伺服器
1、首先需要准備的應用程序包。nginx:nginx/Windows-1.0.4php:php-5.2.16-nts-Win32-VC6-x86.zip(nginx下php是以FastCGI的方式運行,所以我們下載非線程安全也就是nts的php包)(還會用到)RunHiddenConsole:RunHiddenConsole.zip2、安裝與配置。1)php的安裝與配置。直接解壓下載好的php包,到D盤wnmp目錄(D:\wnmp),這里把解壓出來的文件夾重命名成php5。進入文件夾修改php.ini-recommended文件為php.ini,並用Editplus或者Notepad++打開來。找到extension_dir="./ext"更改為extension_dir="D:/wnmp/php5/ext"往下看,再找到;extension=php_mysql.dll;extension=php_mysqli.dll前面指定了php的ext路徑後,只要把需要的擴展包前面所對應的「;」去掉,就可以了。這里打開php_mysql.dll和php_mysqli.dll,讓php支持mysql。當然不要忘掉很重要的一步就是,把php5目錄下的libmysql.dll文件復制到C:\Windows目錄下,也可以在系統變數裡面指定路徑,當然這里我選擇了更為方便的方法^_^。到這里,php已經可以支持mysql了。接下來我們來配置php,讓php能夠與nginx結合。找到;cgi.fix_pathinfo=1我們去掉這里的封號。cgi.fix_pathinfo=1這一步非常重要,這里是php的CGI的設置。2)nginx的安裝與配置。把下載好的nginx-1.0.4的包同樣解壓到D盤的wnmp目錄下,並重命名為nginx。接下來,我們來配置nginx,讓它能夠和php協同工作。進入nginx的conf目錄,打開nginx的配置文件nginx.conf,找到location/{roothtml;#這里是站點的根目錄indexindex.htmlindex.htm;}將roothtml;改為rootD:/wnmp/www;再往下,找到復制代碼#.0.0.1:9000##location~\.php${#roothtml;#fastcgi_pass127.0.0.1:9000;#fastcgi_indexindex.php;#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;#includefastcgi_params;#}復制代碼先將前面的「#」去掉,同樣將roothtml;改為rootD:/wnmp/www;。再把標記為紅色的/scripts改為「$document_root」,這里的「$document_root」就是指前面「root」所指的站點路徑,這是改完後的:復制代碼#.0.0.1:9000#location~\.php${rootD:/wnmp/www;fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;includefastcgi_params;}復制代碼保存配置文件,就可以了。nginx+php的環境就初步配置好了,來跑跑看。我們可以輸入命令來啟動php,並手動啟動nginx,當然也可以利用腳本來實現。首先把下載好的RunHiddenConsole.zip包解壓到nginx目錄內,RunHiddenConsole.exe的作用是在執行完命令行腳本後可以自動關閉腳本,而從腳本中開啟的進程不被關閉。然後來創建腳本,命名為「start_nginx.bat」,我們在Notepad++里來編輯它復制代碼@echooffREMWindows下無效REMsetPHP_FCGI_CHILDREN=5REM每個進程處理的最大請求數,或設置為Windows環境變數setPHP_FCGI_MAX_REQUESTS=:/wnmp/php5/php-cgi.exe-b127.0.0.1:9000-cD:/wnmp/php5/php.:/wnmp/nginx/nginx.exe-pD:/wnmp/nginx復制代碼再另外創建一個名為stop_nginx.bat的腳本用來關閉nginx@/F/IMnginx.exe>/F/IMphp-cgi.exe>nulexit做好後,是這樣的這樣,我們的服務腳本也都創建完畢了。雙擊start_nginx.bat看看進程管理器是不是有兩個nginx.exe的進程和一個php-cgi.exe的進程呢?這樣nginx服務就啟動了,而且php也以fastCGI的方式運行了。到站點目錄下,新建一個phpinfo.php的文件,在裡面編輯保存後,打開瀏覽器輸入「phpinfo.php」,如果看到就說明,nginx+php的環境已經配置好了,呵呵~