web網站服務器(百度)

Nginx背景和概述Nginx(發音同 engine x)是一款基於異步框架的輕量級/高性能由C語言的Web 服務器/反向代理服務器/緩存服務器/電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev(伊戈爾·賽索耶夫)所開發,最初供俄國大型網站Rambler.ru及搜尋引擎Rambler使用。同Apache 一樣都是一種WEB 服務器,基於REST 架構風格,以統一資源描述符(Inform Resources ldentifier )URI 或者統一資源定位符(Uniform Resources Locator )URL 作為溝通依據,通HTTP 協議提供各種網絡服務。Apache 的發展時期很長。而目是毫無爭議的世界第一大服務器,它有著很多優點:穩定、開源、跨平臺等等,它出現的時間太長瞭,它興起的年代,互聯網產業遠近比不上現在。所以它被設計為一個重量級的它不支持高並發的服務器,在Apache 上運行數以萬計的井發訪問,會導致服務器消耗大量內存,操作系統其進行進程或線程間的切換也消耗瞭大量的CPU 圖源,導致HTTP 請求的平均響應速度降低。這些都決定瞭Apache 不可能成為高性能WEB 服務器,輕量圾高井發服務器Nginx 就應運而生瞭。Nginx特點優點:高並發量:基於 epoll/kqueue 模型開發,支持高並發量,官方說其支持高達 5w 並發連接數的響應。內存消耗少:善於處理靜態文件,相較於其他web(比如:apache),占用更少的內存及資源。簡單穩定:配置簡單(一個conf文件),運行簡單(nginx命令),而且運行穩定。節省寬帶:支持GZIP壓縮,可以添加瀏覽器本地緩存的Hedear頭內置健康檢查:如果nginx後端有服務區宕機瞭,不影響前端訪問,能自動監測服務狀態模塊化程度高:功能模塊插件化設計,可以自由配置相應的功能。支持Rwrite重寫規則:能夠根據域名、URL等請求關鍵點,實現定制化的高質量分發。低成本:Nginx的負載均衡功能很強大而且免費開源,相較於幾十萬的硬件負載均衡器成本相當低。支持多系統:Nginx代碼完全用C語言從頭寫成,可以在各系統上編譯並使用。缺點:動態處理差:nginx善於處理靜態文件,但是處理動態頁面相較於Apache之類重量級的web軟件能力稍欠缺。rewrite弱:雖然nginx支持rewrite功能多,但是相較於Apache之類重量級的web軟件能力稍欠缺。Nginx安裝安裝(Ubuntu為例)apt-get install -y build-essential libssl-dev libtool libpcre3 libpcre3-dev make openssl zlib1g-dev
apt-get install nginx -y檢查效果netstat -tnulp | grep nginx
服務相關命令# 啟動停止
systemctl start|stop|reload|… nginx
/etc/init.d/nginx start|stop|reload|…
/usr/sbin/nginx … -s stop|reload

# 查看信息
nginx -V
nginx -v

# 檢查配置文件
nginx -t # 檢查默認配置文件
nginx -t -c file.conf # 指定配置文件進行檢查
移除相關命令# 查看和nginx相關軟件
dpkg –get-selections|grep nginx

# 移除nginx,包括相關文件
apt-get –purge remove nginx
apt-get –purge remove nginx-common
apt-get –purge remove nginx-coreNginx配置相關目錄Windows:1.conf目錄:存放配置文件的目錄,包含主配置文件nginx.conf,是我們經常修改的配置文件。
2.contrib目錄:存放開源愛好者共享的代碼。
3.docs目錄:存放文檔資料。
4.html目錄:默認存放瞭Nginx的錯誤頁面和歡迎頁面。
5.logs目錄:默認存放瞭訪問日志、錯誤日志和Nginx主進程pid文件。
6.temp目錄:臨時目錄,用於存放Nginx運行時產生的臨時文件。
7.nginx.exe:可執行程序,常用於Nginx服務的啟動、停止等管理工作。linux:1.*_temp目錄:共有5個temp結尾的目錄,用於存放Nginx運行時產生的臨時文件。
2.conf目錄:存放配置文件的目錄,包含主配置文件nginx.conf,是我們經常修改的配置文件。
3.html目錄:默認存放瞭Nginx的錯誤頁面和歡迎頁面等。
4.logs目錄:默認存放瞭訪問日志和錯誤日志文件。
5.sbin目錄:默認存放瞭Nginx的二進制命令,常用於Nginx服務的啟動、停止等管理工作。配置文件默認文件:
/etc/nginx/nginx.conf
其他目錄:
/etc/nginx/{sites-enabled/conf.d}
文件結構:
全局配置段
http配置段
server配置段 # 項目或者應用
location配置段 # url配置nginx配置詳解全局配置段主要是全局性的和服務級別的屬性配置,常見的主要有以下幾種設置:user # 設置使用用戶(worker)
worker_processes # 進行增大並發連接數的處理 跟cpu保持一致 八核設置八個
pid # nginx服務啟動時候pid
events # 定義事件相關的屬性
worker_connections # 一個進程允許處理的最大連接數
use # 定義使用的內核模型http配置段主要配置server通用的一些配置:include mime.types; # 文件擴展名與文件類型映射表
default_type application/octet-stream; # 默認文件類型
sendfile on; # 開啟高效文件傳輸模式。
autoindex on; # 開啟目錄列表訪問,合適下載服務器,默認關閉。
tcp_nopush on; # 防止網絡阻塞
tcp_nodelay on; # 防止網絡阻塞
keepalive_timeout 120; # 長連接超時時間,單位是秒
gzip on; # 開啟gzip壓縮輸出server配置段常見樣式:server {
listen <ip>:<port>;
server_name <主機域名>;

}1.listen屬性:作用:定義server監聽的ip和port,當ip和port匹配時候才進行下一步匹配。2.server_name屬性:作用:定義server監聽的域名,當域名匹配時候才進行下一步操作。3.root屬性:作用:定義客戶端請求的html文件所在目錄路徑。表現形式:root /var/www/html;4.index屬性作用:定義客戶端請求時默認返回的文件。表現形式:index index.html index.htm index.nginx-debian.html;location配置段location主要是根據server匹配到的請求路徑去處理和響應。 根據請求完整url,獲取uri(即:除瞭域名(IP)、Port和路徑參數之外的部分),用於location匹配。匹配規則:匹配優先級:精確匹配>location 完整路徑>優先匹配>正則匹配>location 部分路徑>通用匹配匹配示例:location = / { location ~ \.(gif|jpg|png|js|css)$ {
#精確規則A #正則規則D
} }
location = /login { location ~* \.png$ {
#精確規則B #正則規則E
} }
location ^~ /static/ { location / {
#優先規則C #通用規則F
} }location核心動作:響應時按順序查找file,找到則返回file內容,否則的話進行內部重定向(uri)或返回狀態碼(code)。常見示例:# 如果能找到指定的uri那麼就返回相應的內容,否則的話返回錯誤狀態碼404
location / {
try_files $uri $uri/ =404;
}
# 如果能找到指定的文件1/2.html那麼就返回相應的內容,否則的話返回6.html文件內容
location / {
try_files 1.html 2.html /6.html;
}
# 如果能找到指定的uri那麼就返回相應的內容,否則的話就內部重定向到後端名稱為@backup的location
location / {
try_files $uri @backup;
}
location @backup {
# …do something
}location常見操作:1)基本屬性location / {
# 指定響應請求的文件所在路徑
root /var/www/html;
# 指定響應請求的默認文件名稱
index index.php index.html index.htm;
# 指定響應請求的文件瀏覽器緩存過期時間,一般用於靜態文件
expires 7d;
# 如果root指定的路徑下有查找的文件,就返回,否則報404
try_files $uri $uri/ =404;
}
2)臨時跳轉location = /test/ {
return 302 http://www.itcast.cn/;
}
3)目錄列表location /upload {
# 指定查看文件列表路徑(絕對路徑)
alias /var/www/upload/;
# 開啟目錄自動索引
autoindex on;
# 默認on,顯示文件確切大小(bytes)。off表示顯示文件的大概大小(kB/MB/…)
autoindex_exact_size off;
# 默認off,顯示的文件時間為GMT時間。on表示顯示文件的服務器時間
autoindex_localtime on;
}其他說明1)root VS aliasroot 和 alias 所起的作用都是指定響應請求文件所在的路徑,隻是它們有區別。root 表示 location 匹配內容的相對路徑alias 表示 一個絕對路徑。一般情況下,在location /中配置root,在location /other中配置alias。效果一: 效果二:
location /txt/ { location /txt/ {
alias /var/www/txt/; root /var/www/txt/;
} }
效果一:訪問http://localhost/txt/1.txt,nginx找/var/www/txt/1.txt文件效果二:訪問http://localhost/txt/1.txt,nginx找/var/www/txt/txt/1.txt文件2)關於URL尾部的/有如下註意事項* location中的location_match字符有無"/"不受影響,/user/等同/user。
* 對於訪問網站域名(http://www.smartli.cn/),尾部有無"/"不受影響,因為瀏覽器會自動補全"/"。
* 對於訪問網站域名後面的路徑(http://www.smartli.cn/other/),尾部的"/"很重要。
訪問URL尾部的"/"表示目錄,沒有"/"表示文件,而且文件找不到的話,會發生重定向。* /other/:表示服務器會自動去該目錄下找對應的默認文件。
* /other:表示服務器會先去找other文件,找不到的話會將other當成目錄,重定向到/other/,去該
目錄下找默認文件。Nginx反向代理代理是什麼?簡單來說,我找一個中間人,代替我去做一件事情,隻要他給我結果就可以。代理一般分為兩種:正向代理和反向代理。區別:1)從用途上來講正向代理-為局域網客戶端向外訪問Internet服務,可以使用緩沖特性減少網絡使用率。反向代理-為局域網服務器向外提供Internet服務,可以使用負載平衡提高客戶訪問量,還可以基於高級URL策略和管理技術對服務進行高質量管控。2)從安全性來講正向代理-必須采取安全措施確保內網客戶端通過它訪問外部網站,隱藏客戶端的身份。反向代理-對外提供服務是透明的,客戶端並不知道自己訪問的是一個代理,隱藏服務端的身份。nginx代理配置說明示例:location / {
# 設定請求跳轉後的地址,可以使用hostname或ip:port形式
proxy_pass http://localhost:8000;
}proxy_pass指令設置被代理服務器的地址和被映射的URI,地址可以使用主機名或IP加端口號的形式。Nginx負載均衡上一小節我們使用proxy_pass的方式實現瞭nginx代理請求到後端服務器的效果,隨著我們的網站訪問量越來越多,一個後端服務器就不現實瞭,那麼接下來如何在訪問量日漸增大的情況下,滿足線上業務的穩定呢?解決方法就是:負載均衡。基本配置示例:upstream backends {
server [域名|ip]:port;
server [域名|ip]:port;
server [域名|ip]:port;

}

server {
location / {
proxy_pass http://backends;
}
}負載均衡策略Nginx提供的負載均衡策略有兩種:內置策略:nginx自帶的算法雨露均沾型:輪訓、加權輪訓、哈希定向服務型:ip_hash、least_conn、cookie、route、lean商業類型:ntlm、least_time、queue、stick擴展策略:各種結合業務場景自定義的算法或者第三方算法自定義算法第三方算法:fair、url_hash常用算法簡介輪詢(默認):請求按順序逐一分配到不同的後端服務器。weight:指定輪詢權重,值越大,分配到的幾率就越高,適用於後端服務器性能不均衡情況。ip_hash:按訪問IP的哈希結果分配請求,分配後客戶端訪問固定後端服務器,有效的解決動態網頁會話共享問題。fair:基於後端服務器的響應時間來分配請求,響應時間短的優先分配。url_hash:按訪問URL的哈希結果分配請求,使同一URL定向到同一臺後端服務器,可提高後端緩存服務器的效率。加權輪訓示例:# vim /etc/nginx/conf.d/upstream.conf

upstream backends {
server 172.16.179.130:10086 backup;
server 172.16.179.130:10087 weight=1;
server 172.16.179.130:10088 weight=2;
}
…ip_hash示例:# vim /etc/nginx/conf.d/upstream.conf

upstream backends {
ip_hash;
server 172.16.179.130:10086;

}
…日志解析通過對日志文件的分析,可以為網站運營和維護提供相應的數據支持,最常見的場景就是獲取客戶端的IP,記錄用戶訪問量。Nginx默認提供瞭兩個日志文件 access.log和error.log。access.log:可以得到用戶請求的相關信息;error.log:可以獲取某個web服務故障或其性能瓶頸等信息。1)基本配置# cat /etc/nginx/nginx.conf
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
2)默認日志格式log_format combined '$remote_addr – $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';自定義日志1)設置日志格式# vim /etc/nginx/nginx.conf

# Logging Settings
## 設定日志格式的方法: log_format 格式名稱 "日志表現樣式"
log_format proxy_format '$remote_addr – $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
2)使用日志格式access_log 日志路徑 格式名稱;學完以上的配置,你就基本上可以使用Nginx配置一個簡單的比如博客網站,自己買一個服務器然後安裝Nginx配置一下文件,把你的博客文件放到指定目錄下,然後訪問你服務器對應的地址和端口就可以輕松的看到你的博客啦,快去嘗試吧!當然,Nginx用在大廠上面是需要更多的配置的,以滿足高並發下的需求。作者簡介:Python菜鳥工程師,將在接下來的一段時間內與大傢分享一些與Python相關的知識點。如若文中出現問題,各位大佬多多指點,互相學習。喜歡的關註一個吧!謝謝!

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://kuaisubeian.cc/48629.html

kuaisubeian