日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
神器Nginx的學(xué)習(xí)手冊(cè)

無(wú)論是運(yùn)維、開(kāi)發(fā)、測(cè)試,Nginx技術(shù)棧的學(xué)習(xí)總是必不可少的,只是不同的崗位掌握的深度與廣度不同而已。所以,民工哥利用周末休息時(shí)間,將往期推送的Nginx文章給大家重新整理出來(lái),整理出成體系的Nginx知識(shí)體系,供大家學(xué)習(xí)與參考。

創(chuàng)新互聯(lián)建站專注于瑤海網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供瑤海營(yíng)銷型網(wǎng)站建設(shè),瑤海網(wǎng)站制作、瑤海網(wǎng)頁(yè)設(shè)計(jì)、瑤海網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造瑤海網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供瑤海網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

碼字不易,如有幫助,請(qǐng)點(diǎn)在看與轉(zhuǎn)發(fā)朋友圈支持一波,感謝?。。?!

Nginx 簡(jiǎn)介

Nginx 是開(kāi)源高性能、高可靠的?Web?和反向代理服務(wù)器,而且支持熱部署,幾乎可以做到 7 * 24 小時(shí)不間斷運(yùn)行,即使運(yùn)行幾個(gè)月也不需要重新啟動(dòng),還能在不間斷服務(wù)的情況下對(duì)軟件版本進(jìn)行熱更新。性能是 Nginx 最重要的考量,其占用內(nèi)存少、并發(fā)能力強(qiáng)、能支持高達(dá) 5w 個(gè)并發(fā)連接數(shù),最重要的是, Nginx 是免費(fèi)的并可以商業(yè)化,配置使用也比較簡(jiǎn)單。

官方網(wǎng)站:http://www.nginx.org

Nginx 特點(diǎn)

Web服務(wù)器

高性能的WEB服務(wù)器軟件,與Apache相比,它支持更多的并發(fā)連接且占用服務(wù)器資源少,效率高

反向代理或負(fù)載均衡服務(wù)器

作為負(fù)載均衡服務(wù)器,它可以作為HTTP SERVER或DB等服務(wù)的代理服務(wù)器,類似Haproxy代理軟件的功能,Nginx的代理功能相對(duì)簡(jiǎn)單,效率也不及Haproxy,同時(shí)它也是一個(gè)優(yōu)秀的郵件代理服務(wù)軟件

緩存服務(wù)器

Nginx還可以作緩存服務(wù)器,類似于專業(yè)的緩存軟件功能

Nginx 優(yōu)缺點(diǎn)

Nginx 優(yōu)點(diǎn)

  • 高并發(fā):能支持1-2萬(wàn)甚至更多的并發(fā)連接(靜態(tài)小文件)
  • 內(nèi)存消耗少
  • 可以做HTTP反向代理——負(fù)載均衡的功能
  • 內(nèi)置對(duì)集群節(jié)點(diǎn)服務(wù)器的健康性查功能,不過(guò)功能相對(duì)較弱
  • 通過(guò)cache插件可以實(shí)現(xiàn)緩存軟件能夠?qū)崿F(xiàn)的功能

Nginx 的缺點(diǎn)

Nginx 僅能支持http、https和Email協(xié)議,這樣就在適用范圍上面小些,這個(gè)是它的缺點(diǎn)

對(duì)后端服務(wù)器的健康檢查,只支持通過(guò)端口來(lái)檢測(cè),不支持通過(guò) url來(lái)檢測(cè)。不支持 Session 的直接保持,但能通過(guò) ip_hash 來(lái)解決

Nginx 應(yīng)用場(chǎng)景

Nginx 的最重要的幾個(gè)使用場(chǎng)景:

  • 靜態(tài)資源服務(wù),通過(guò)本地文件系統(tǒng)提供服務(wù);
  • 反向代理服務(wù),延伸出包括緩存、負(fù)載均衡等;
  • API 服務(wù), OpenResty ;

對(duì)于前端來(lái)說(shuō) Node.js 并不陌生, Nginx 和 Node.js 的很多理念類似, HTTP 服務(wù)器、事件驅(qū)動(dòng)、異步非阻塞等,且 Nginx 的大部分功能使用 Node.js 也可以實(shí)現(xiàn),但 Nginx 和 Node.js 并不沖突,都有自己擅長(zhǎng)的領(lǐng)域。Nginx 擅長(zhǎng)于底層服務(wù)器端資源的處理(靜態(tài)資源處理轉(zhuǎn)發(fā)、反向代理,負(fù)載均衡等), Node.js 更擅長(zhǎng)上層具體業(yè)務(wù)邏輯的處理,兩者可以完美組合。

用一張圖表示:

Apache VS Nginx

Apache和Nginx都屬于Web服務(wù)器,兩者都實(shí)現(xiàn)了HTTP 1.1協(xié)議。無(wú)論是選擇哪個(gè),都是根據(jù)應(yīng)用場(chǎng)景來(lái)決定的,所以些文件僅從應(yīng)用場(chǎng)景出發(fā),來(lái)對(duì)比兩者之間的各自特點(diǎn)。要讓正確的工具,做出正確的事。

功能對(duì)比

Nginx和Apache一樣,都是HTTP服務(wù)器軟件,在功能實(shí)現(xiàn)上都采用模塊化結(jié)構(gòu)設(shè)計(jì),都支持通用的語(yǔ)言接口,如PHP、Perl、Python等,同時(shí)還支持正向和反向代理、虛擬主機(jī)、URL重寫、壓縮傳輸、SSL加密傳輸?shù)取?/p>

  • 在功能實(shí)現(xiàn)上,Apache的所有模塊都支持動(dòng)、靜態(tài)編譯,而Nginx模塊都是靜態(tài)編譯的,
  • 對(duì)FastCGI的支持,Apache對(duì)Fcgi的支持不好,而Nginx對(duì)Fcgi的支持非常好;
  • 在處理連接方式上,Nginx支持epoll,而Apache卻不支持;
  • 在空間使用上,Nginx安裝包僅僅只有幾百K,和Nginx比起來(lái)Apache絕對(duì)是龐然大物。

Nginx相對(duì)apache的優(yōu)點(diǎn)

  • 輕量級(jí),同樣起web 服務(wù),比apache 占用更少的內(nèi)存及資源
  • 靜態(tài)處理,Nginx 靜態(tài)處理性能比 Apache 高 3倍以上
  • 抗并發(fā),nginx 處理請(qǐng)求是異步非阻塞的,而apache則是阻塞型的,在高并發(fā)下nginx 能保持低資源低消耗高性能。在- - Apache+PHP(prefork)模式下,如果PHP處理慢或者前端壓力很大的情況下,很容易出現(xiàn)Apache進(jìn)程數(shù)飆升,從而拒絕服務(wù)的現(xiàn)象。
  • 高度模塊化的設(shè)計(jì),編寫模塊相對(duì)簡(jiǎn)單
  • 社區(qū)活躍,各種高性能模塊出品迅速啊

apache相對(duì)nginx的優(yōu)點(diǎn)

  • rewrite,比nginx 的rewrite 強(qiáng)大
  • 模塊超多,基本想到的都可以找到
  • 少bug,nginx的bug相對(duì)較多
  • 超穩(wěn)定
  • Apache對(duì)PHP支持比較簡(jiǎn)單,Nginx需要配合其他后端用

Nginx 安裝

本文以CentOS 7.x 系統(tǒng)為例,使用 yum 安裝 Nginx。

yum install nginx -y

安裝完成后,通過(guò) rpm -ql nginx 命令查看 Nginx 的安裝信息。

# Nginx配置文件
/etc/nginx/nginx.conf # nginx 主配置文件
/etc/nginx/nginx.conf.default

# 可執(zhí)行程序文件
/usr/bin/nginx-upgrade
/usr/sbin/nginx

# nginx庫(kù)文件
/usr/lib/systemd/system/nginx.service # 用于配置系統(tǒng)守護(hù)進(jìn)程
/usr/lib64/nginx/modules # Nginx模塊目錄

# 幫助文檔
/usr/share/doc/nginx-1.16.1
/usr/share/doc/nginx-1.16.1/CHANGES
/usr/share/doc/nginx-1.16.1/README
/usr/share/doc/nginx-1.16.1/README.dynamic
/usr/share/doc/nginx-1.16.1/UPGRADE-NOTES-1.6-to-1.10

# 靜態(tài)資源目錄
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html

# 存放Nginx日志文件
/var/log/nginx

主要關(guān)注的文件夾有兩個(gè):

  • /etc/nginx/conf.d/是子配置項(xiàng)存放處,/etc/nginx/nginx.conf 主配置文件會(huì)默認(rèn)把這個(gè)文件夾中所有子配置項(xiàng)都引入;
  • /usr/share/nginx/html/靜態(tài)文件都放在這個(gè)文件夾,也可以根據(jù)你自己的習(xí)慣放在其他地方;

Nginx 常用命令

systemctl 系統(tǒng)命令:

# 開(kāi)機(jī)配置
systemctl enable nginx # 開(kāi)機(jī)自動(dòng)啟動(dòng)
systemctl disable nginx # 關(guān)閉開(kāi)機(jī)自動(dòng)啟動(dòng)

# 啟動(dòng)Nginx
systemctl start nginx # 啟動(dòng)Nginx成功后,可以直接訪問(wèn)主機(jī)IP,此時(shí)會(huì)展示Nginx默認(rèn)頁(yè)面

# 停止Nginx
systemctl stop nginx

# 重啟Nginx
systemctl restart nginx

# 重新加載Nginx
systemctl reload nginx

# 查看 Nginx 運(yùn)行狀態(tài)
systemctl status nginx

# 查看Nginx進(jìn)程
ps -ef | grep nginx

# 殺死Nginx進(jìn)程
kill -9 pid # 根據(jù)上面查看到的Nginx進(jìn)程號(hào),殺死Nginx進(jìn)程,-9 表示強(qiáng)制結(jié)束進(jìn)程

Nginx 應(yīng)用程序命令:

nginx -s reload  # 向主進(jìn)程發(fā)送信號(hào),重新加載配置文件,熱重啟
nginx -s reopen  # 重啟 
Nginxnginx -s stop    # 快速關(guān)閉
nginx -s quit    # 等待工作進(jìn)程處理完成后關(guān)閉
nginx -T         # 查看當(dāng)前 Nginx 最終的配置
nginx -t         # 檢查配置是否有問(wèn)題

Nginx 配置文件

Nginx 的配置文件結(jié)構(gòu)如下:

# main段配置信息
user  nginx;                        # 運(yùn)行用戶,默認(rèn)即是nginx,可以不進(jìn)行設(shè)置
worker_processes  auto;             # Nginx 進(jìn)程數(shù),一般設(shè)置為和 CPU 核數(shù)一樣
error_log  /var/log/nginx/error.log warn;   # Nginx 的錯(cuò)誤日志存放目錄
pid        /var/run/nginx.pid;      # Nginx 服務(wù)啟動(dòng)時(shí)的 pid 存放位置

# events段配置信息
events {
    use epoll;     # 使用epoll的I/O模型(如果你不知道Nginx該使用哪種輪詢方法,會(huì)自動(dòng)選擇一個(gè)最適合你操作系統(tǒng)的)
    worker_connections 1024;   # 每個(gè)進(jìn)程允許最大并發(fā)數(shù)
}

# http段配置信息
# 配置使用最頻繁的部分,代理、緩存、日志定義等絕大多數(shù)功能和第三方模塊的配置都在這里設(shè)置
http { 
    # 設(shè)置日志模式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;   # Nginx訪問(wèn)日志存放位置

    sendfile            on;   # 開(kāi)啟高效傳輸模式
    tcp_nopush          on;   # 減少網(wǎng)絡(luò)報(bào)文段的數(shù)量
    tcp_nodelay         on;
    keepalive_timeout   65;   # 保持連接的時(shí)間,也叫超時(shí)時(shí)間,單位秒
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;      # 文件擴(kuò)展名與類型映射表
    default_type        application/octet-stream;   # 默認(rèn)文件類型

    include /etc/nginx/conf.d/*.conf;   # 加載子配置項(xiàng)
    
    # server段配置信息
    server {
     listen       80;       # 配置監(jiān)聽(tīng)的端口
     server_name  localhost;    # 配置的域名
      
     # location段配置信息
     location / {
      root   /usr/share/nginx/html;  # 網(wǎng)站根目錄
      index  index.html index.htm;   # 默認(rèn)首頁(yè)文件
      deny 172.168.22.11;   # 禁止訪問(wèn)的ip地址,可以為all
      allow 172.168.33.44;# 允許訪問(wèn)的ip地址,可以為all
     }
     
     error_page 500 502 503 504 /50x.html;  # 默認(rèn)50x對(duì)應(yīng)的訪問(wèn)頁(yè)面
     error_page 400 404 error.html;   # 同上
    }
}
  • main 全局配置,對(duì)全局生效;
  • events 配置影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接;
  • http 配置代理,緩存,日志定義等絕大多數(shù)功能和第三方模塊的配置;
  • server 配置虛擬主機(jī)的相關(guān)參數(shù),一個(gè) http 塊中可以有多個(gè) server 塊;
  • location 用于配置匹配的 uri ;
  • upstream 配置后端服務(wù)器具體地址,負(fù)載均衡配置不可或缺的部分;

更多關(guān)于Nginx配置文件的介紹可以參考下列文章:

Nginx常用的內(nèi)置變量

Nginx 的進(jìn)程模型

Nginx 服務(wù)器,正常運(yùn)行過(guò)程中:

  • 多進(jìn)程:一個(gè) Master 進(jìn)程、多個(gè) Worker 進(jìn)程
  • Master 進(jìn)程:管理 Worker 進(jìn)程
  • 對(duì)外接口:接收外部的操作(信號(hào))
  • 對(duì)內(nèi)轉(zhuǎn)發(fā):根據(jù)外部的操作的不同,通過(guò)信號(hào)管理 Worker
  • 監(jiān)控:監(jiān)控 worker 進(jìn)程的運(yùn)行狀態(tài),worker 進(jìn)程異常終止后,自動(dòng)重啟 worker 進(jìn)程
  • Worker 進(jìn)程:所有 Worker 進(jìn)程都是平等的
  • 實(shí)際處理:網(wǎng)絡(luò)請(qǐng)求,由 Worker 進(jìn)程處理;
  • Worker 進(jìn)程數(shù)量:在 nginx.conf 中配置,一般設(shè)置為核心數(shù),充分利用 CPU 資源,同時(shí),避免進(jìn)程數(shù)量過(guò)多,避免進(jìn)程競(jìng)爭(zhēng) CPU 資源,增加上下文切換的損耗。

Nginx優(yōu)化配置

其實(shí)核心內(nèi)容主要是通過(guò)修改 Nginx 配置文件來(lái)進(jìn)行調(diào)優(yōu)的!

在我們的日常工作學(xué)習(xí)中,我們會(huì)該如何去優(yōu)化自己的Nginx服務(wù)器?遇到以下問(wèn)題我們?cè)撊绾翁幚砟兀?/p>

  • 如何自定義返回給客戶端的404錯(cuò)誤頁(yè)面
  • 如何查看服務(wù)器狀態(tài)信息
  • 如何優(yōu)化Nginx并發(fā)量
  • .......

Nginx 是如何實(shí)現(xiàn)并發(fā)的?為什么 Nginx 不使用多線程?Nginx常見(jiàn)的優(yōu)化手段有哪些?502錯(cuò)誤可能原因有哪些?這種面試問(wèn)題你肯定是經(jīng)常被問(wèn)到。

最后給大家分享2個(gè)基于HTTPS優(yōu)化案例:

Nginx 日志相關(guān)

介紹完了安裝、配置、優(yōu)化這些常用的場(chǎng)景之后,日志這塊也是非常重要的,大家都知道日常排錯(cuò),日志起著舉足輕重的作用。

Nginx日志主要分為兩種:access_log(訪問(wèn)日志)和error_log(錯(cuò)誤日志)。通過(guò)訪問(wèn)日志我們可以得到用戶的IP地址、瀏覽器的信息,請(qǐng)求的處理時(shí)間等信息。錯(cuò)誤日志記錄了訪問(wèn)出錯(cuò)的信息,可以幫助我們定位錯(cuò)誤的原因。

error_log  /var/log/nginx/error.log warn;
#配置錯(cuò)誤日志的級(jí)別及存儲(chǔ)目錄

events {
    worker_connections  1024;
}
http {
..................
    log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #配置日志的模式
    access_log  /var/log/nginx/access.log main;
    #配置訪問(wèn)日志存儲(chǔ)目錄
}

由于nginx功能強(qiáng)大,性能突出,越來(lái)越多的web應(yīng)用采用nginx作為http和反向代理的web服務(wù)器。而nginx的訪問(wèn)日志不管是做用戶行為分析還是安全分析都是非常重要的數(shù)據(jù)源之一。如何有效便捷的采集nginx的日志進(jìn)行有效的分析成為大家關(guān)注的問(wèn)題。

Nginx版本升級(jí)

這里我們來(lái)聊一聊,在企業(yè)實(shí)際生產(chǎn)環(huán)境中經(jīng)常遇到的一個(gè)情況,如何升級(jí)Nginx到新的版本和如何回滾至舊版本。

版本升級(jí)其實(shí)就是針對(duì)二進(jìn)制文件的升級(jí),過(guò)程如下:

[root@nginx ~]# /usr/local/nginx-1.12.2/sbin/nginx -v
nginx version: nginx/1.12.2
[root@nginx ~]# cd /usr/local/nginx-1.12.2/sbin/
[root@nginx sbin]# mv nginx nginx-1.12.2
#首先備份原來(lái)的舊版本nginx二進(jìn)制文件
[root@nginx sbin]# cp /usr/local/nginx-1.14.2/sbin/nginx ./
#拷貝新版本的二進(jìn)制文件到當(dāng)前目錄

注:其實(shí)升級(jí)新版本,最重要的就是平滑升級(jí),讓前端用戶無(wú)感知(也就是不中斷服務(wù),這個(gè)其實(shí)不難,生產(chǎn)中多臺(tái)依次灰度升級(jí))。

對(duì)于升級(jí)來(lái)說(shuō),最難的不是升級(jí),而是回滾,因?yàn)樵趯?shí)際生產(chǎn)環(huán)境回滾的機(jī)率是存在,比如:新版本由于某些未知bug導(dǎo)致與現(xiàn)有應(yīng)用不兼容、或出現(xiàn)運(yùn)行不穩(wěn)定的情況等等。

Nginx 反向代理與負(fù)載均衡

反向代理簡(jiǎn)介

反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器。反向代理是為服務(wù)端服務(wù)的,反向代理可以幫助服務(wù)器接收來(lái)自客戶端的請(qǐng)求,幫助服務(wù)器做請(qǐng)求轉(zhuǎn)發(fā),負(fù)載均衡等。

反向代理對(duì)服務(wù)端是透明的,對(duì)我們是非透明的,即我們并不知道自己訪問(wèn)的是代理服務(wù)器,而服務(wù)器知道反向代理在為他服務(wù)。

配置實(shí)例

http {
.............
    upstream product_server{
        127.0.0.1:8081;
    }

    upstream admin_server{
        127.0.0.1:8082;
    }

    upstream test_server{
        127.0.0.1:8083;
    }

server {
      
  #默認(rèn)指向product的server
  location / {
      proxy_pass http://product_server;
      }

  location /product/{
      proxy_pass http://product_server;
     }

  location /admin/ {
      proxy_pass http://admin_server;
     }

  location /test/ {
      proxy_pass http://test_server;
      }
    }
}

。nginx 每個(gè)location都是一個(gè)匹配目錄,nginx的策略是:訪問(wèn)請(qǐng)求來(lái)時(shí),會(huì)對(duì)訪問(wèn)地址進(jìn)行解析,從上到下逐個(gè)匹配,匹配上就執(zhí)行對(duì)應(yīng)location大括號(hào)中的策略,并根據(jù)策略對(duì)請(qǐng)求作出相應(yīng)。

反向代理的優(yōu)勢(shì):

  • 隱藏真實(shí)服務(wù)器;
  • 負(fù)載均衡便于橫向擴(kuò)充后端動(dòng)態(tài)服務(wù);
  • 動(dòng)靜分離,提升系統(tǒng)健壯性;

Nginx 負(fù)載均衡

nginx能實(shí)現(xiàn)負(fù)載均衡,什么是負(fù)載均衡呢?就是說(shuō)應(yīng)用部署在不同的服務(wù)器上,但是通過(guò)統(tǒng)一的域名進(jìn)入,nginx則對(duì)請(qǐng)求進(jìn)行分發(fā),將請(qǐng)求分發(fā)到不同的服務(wù)器上去處理,這樣就可以有效的減輕了單臺(tái)服務(wù)器的壓力。

配置實(shí)例

upstream server_pools { 
  server 192.168.1.11:8880   weight=5;
  server 192.168.1.12:9990   weight=1;
  server 192.168.1.13:8989   weight=6;
  #weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大
}
server {  
  listen 80; 
  server_name mingongge.com;
  location / {    
  proxy_pass http://server_pools; 
   }
}

Nginx 實(shí)現(xiàn)負(fù)載均衡的策略

  • 輪詢策略:默認(rèn)情況下采用的策略,將所有客戶端請(qǐng)求輪詢分配給服務(wù)端。這種策略是可以正常工作的,但是如果其中某一臺(tái)服務(wù)器壓力太大,出現(xiàn)延遲,會(huì)影響所有分配在這臺(tái)服務(wù)器下的用戶。
  • 最小連接數(shù)策略:將請(qǐng)求優(yōu)先分配給壓力較小的服務(wù)器,它可以平衡每個(gè)隊(duì)列的長(zhǎng)度,并避免向壓力大的服務(wù)器添加更多的請(qǐng)求。
  • 最快響應(yīng)時(shí)間策略:優(yōu)先分配給響應(yīng)時(shí)間最短的服務(wù)器。
  • 客戶端 ip 綁定策略:來(lái)自同一個(gè) ip 的請(qǐng)求永遠(yuǎn)只分配一臺(tái)服務(wù)器,有效解決了動(dòng)態(tài)網(wǎng)頁(yè)存在的 session 共享問(wèn)題。

Nginx 動(dòng)靜分離

Nginx動(dòng)靜分離是讓動(dòng)態(tài)網(wǎng)站里的動(dòng)態(tài)網(wǎng)頁(yè)根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開(kāi)來(lái),動(dòng)靜資源做好了拆分以后,我們就可以根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作,這就是網(wǎng)站靜態(tài)化處理的核心思路。

server {  
listen 80;  
server_name mingongge.com;  
location /static {      
  root /wwww/web/web_static_site; 
  }
}

也可以使用下面的方法

location /image {
 alias /web/nginx/static/image/;
}
注意:使用alias末尾一定要添加/,并且它只能位于location中

使用前后端分離后,可以很大程度提升靜態(tài)資源的訪問(wèn)速度,即使動(dòng)態(tài)服務(wù)不可用,靜態(tài)資源的訪問(wèn)也不會(huì)受到影響。

Nginx 高級(jí)功能

重定向配置

location / {
 return 404; #直接返回狀態(tài)碼
}
location / {
 return 404 "pages not found"; #返回狀態(tài)碼 + 一段文本
}
location / {
 return 302 /blog ; #返回狀態(tài)碼 + 重定向地址
}
location / {
 return https://www.mingongge.com ; #返回重定向地址
}

示例如下

server { 
listen 80;
server_name www.mingongge.com;
return 301 http://mingongge.com$request_uri;
}
server {
listen 80; 
server_name www.mingongge.com; 
location /cn-url { 
   return 301 http://mingongge.com.cn; 
   }
}
server{
  listen 80;
  server_name mingongge.com; # 要在本地hosts文件進(jìn)行配置
  root html;
  location /search {
   rewrite ^/(.*) https://www.mingongge.com redirect;
  }
  
  location /images {
   rewrite /images/(.*) /pics/$1;
  }
  
  location /pics {
   rewrite /pics/(.*) /photos/$1;
  }
  
  location /photos {
  
  }
}

流量拷貝

需求:將生產(chǎn)環(huán)境的流量拷貝到預(yù)上線環(huán)境或測(cè)試環(huán)境,這樣做有很多好處,比如:

  • 可以驗(yàn)證功能是否正常,以及服務(wù)的性能;
  • 用真實(shí)有效的流量請(qǐng)求去驗(yàn)證,又不用造數(shù)據(jù),不影響線上正常訪問(wèn);
  • 這跟灰度發(fā)布還不太一樣,鏡像流量不會(huì)影響真實(shí)流量;
  • 可以用來(lái)排查線上問(wèn)題;
  • 重構(gòu),假如服務(wù)做了重構(gòu),這也是一種測(cè)試方式;

限流

Nginx按請(qǐng)求速率限速模塊使用的是漏桶算法,即能夠強(qiáng)行保證請(qǐng)求的實(shí)時(shí)處理速度不會(huì)超過(guò)設(shè)置的閾值。

Nginx官方版本限制IP的連接和并發(fā)分別有兩個(gè)模塊:

  • limit_req_zone 用來(lái)限制單位時(shí)間內(nèi)的請(qǐng)求數(shù),即速率限制,采用的漏桶算法 "leaky bucket"。
  • limit_req_conn 用來(lái)限制同一時(shí)間連接數(shù),即并發(fā)限制。

緩存

Nginx 緩存作為性能優(yōu)化的一個(gè)重要手段,可以極大減輕后端服務(wù)器的負(fù)載。下面我們將介紹 Nginx 緩存配置的相關(guān)指令以及 http 緩存機(jī)制,以及 Nginx 緩存實(shí)踐案例分析。

灰度發(fā)布

執(zhí)行過(guò)程:

  • 當(dāng)用戶請(qǐng)求到達(dá)前端代理服務(wù)Nginx,內(nèi)嵌的lua模塊解析Nginx配置文件中的lua腳本代碼;
  • Lua變量獲得客戶端IP地址,去查詢memcached緩存內(nèi)是否有該鍵值,如果有返回值執(zhí)行@client_test,否則執(zhí)行@client。
  • Location @client_test把請(qǐng)求轉(zhuǎn)發(fā)給部署了new版代碼的服務(wù)器,location @client把請(qǐng)求轉(zhuǎn)發(fā)給部署了normal版代碼的服務(wù)器,服務(wù)器返回結(jié)果。整個(gè)過(guò)程完成。

封殺惡意訪問(wèn)

看了 nginx 的訪問(wèn)日志,發(fā)現(xiàn)每天有好多國(guó)外的 IP 地址來(lái)訪問(wèn)我的網(wǎng)站,并且訪問(wèn)的內(nèi)容基本上都是惡意的。因此我決定禁止國(guó)外 IP 來(lái)訪問(wèn)我的網(wǎng)站

Nginx+keepalived 實(shí)現(xiàn)高可用

Keepalived軟件起初是專為L(zhǎng)VS負(fù)載均衡軟件設(shè)計(jì)的,用來(lái)管理并監(jiān)控LVS集群系統(tǒng)中各個(gè)服務(wù)節(jié)點(diǎn)的狀態(tài),后來(lái)又加入了可以實(shí)現(xiàn)高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協(xié)議)功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(wù)(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件。keepalived高可用集群服務(wù)

Nginx 終極指南

介紹用來(lái)提高Nginx服務(wù)器的安全性,穩(wěn)定性和性能的12種操作。

  • 保持Nginx的及時(shí)升級(jí)
  • 去掉不用的Nginx模塊
  • 禁用server_tokens項(xiàng)
  • 禁止非法的HTTP User Agents
  • 禁掉不需要的 HTTP 方法
  • 設(shè)置緩沖區(qū)容量上限
  • 限制最大連接數(shù)
  • 設(shè)置日志監(jiān)控
  • 阻止圖片外鏈
  • 禁止 SSL 并且只打開(kāi) TLS
  • 證書(shū)加密(HTTPS)
  • 重定向HTTP請(qǐng)求到HTTPS

Nginx 監(jiān)控

監(jiān)控Web服務(wù)器對(duì)于查看網(wǎng)站上發(fā)生的情況至關(guān)重要。關(guān)注最多的便是日志變動(dòng),查看實(shí)時(shí)日志文件變動(dòng)大家第一反應(yīng)應(yīng)該是'tail -f /path/to/log'命令吧,但是如果每個(gè)網(wǎng)站的訪問(wèn)日志都是使用這種方式查看也是相當(dāng)崩潰的,今天小編就跟大家分享一個(gè)強(qiáng)大的Nginx日志監(jiān)控工具。

日常生產(chǎn)環(huán)境搭建了Nginx集群后,就需要繼續(xù)深入研究的就是日常Nginx監(jiān)控。Nginx如何監(jiān)控?相信百度就可以找到:nginx-status

通過(guò)Nginx-status,實(shí)時(shí)獲取到Nginx監(jiān)控?cái)?shù)據(jù)后,如何和現(xiàn)有監(jiān)控系統(tǒng)集成?一個(gè)很好的解決方案:Nginx+Telegraf+Influxdb+Grafana

即通過(guò)Telegraf監(jiān)控插件定時(shí)收集Nginx的監(jiān)控狀態(tài),存儲(chǔ)到時(shí)序數(shù)據(jù)庫(kù)Influxdb中,然后通過(guò)Grafana展現(xiàn)即可。

這是我發(fā)現(xiàn)的又一款管理神器,可以實(shí)現(xiàn)配置管理,和性能監(jiān)控。


本文題目:神器Nginx的學(xué)習(xí)手冊(cè)
文章源于:http://www.5511xx.com/article/dphjjhi.html