日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx工作原理及基本使用

發布時間:2023/12/10 Nginx 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx工作原理及基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nginx工作原理

Nginx默認采用多進程工作方式,Nginx啟動后,會運行一個master進程和多個worker進程。其中master充當整個進程組與用戶的交互接口,同時對進程進行監護,管理worker進程來實現重啟服務、平滑升級、更換日志文件、配置文件實時生效等功能。worker用來處理基本的網絡事件,worker之間是平等的,他們共同競爭來處理來自客戶端的請求。

Nginx主要由一個master主進程和多個worker進程

  • master主進程主要是管理worker進程,對網絡事件進行收集和分發:
    1.接收來自外界的信號
    2.向各worker進程發送信號
    3.監控worker進程的運行狀態,當worker進程退出后(異常情況下),會自動重新啟動新的worker進程
  • nginx用一個獨立的worker進程來處理一個請求,一個worker進程可以處理多個請求:
  • 當一個worker進程在accept這個連接之后,就開始讀取請求,解析請求,處理請求,產生數據后,再返回給客戶端,最后才斷開連接。
  • 一個請求,完全由worker進程來處理,而且只在一個worker進程中處理。采用這種方式的好處:
  • 節省鎖帶來的開銷。對于每個worker進程來說,獨立的進程,不需要加鎖,所以省掉了鎖帶來的開銷,同時在編程以及問題查上時,也會方便很多
  • 獨立進程,減少風險。
  • 采用獨立的進程,可以讓互相之間不會影響,一個進程退出后,其它進程還在工作,服務不會中斷,master進程則很快重新啟動新的worker進程。
  • 在一次請求里無需進程切換
  • Nginx的IO通常使用epoll,epoll函數使用了I/O復用模型。與I/O阻塞模型比較,I/O復用模型的優勢在于可以同時等待多個(而不只是一個)套接字描述符就緒。Nginx的epoll工作流程如下:
    • master進程先建好需要listen的socket后,然后再fork出多個woker進程,這樣每個work進程都可以去accept這個socket
    • 當一個client連接到來時,所有accept的work進程都會受到通知,但只有一個進程可以accept成功,其它的則會accept失敗,Nginx提供了一把共享鎖來保證同一時刻只有一個work進程在accept連接,從而解決驚群問題
    • 當一個worker進程accept這個連接后,就開始讀取請求,解析請求,處理請求,產生數據后,再返回給客戶端,最后才斷開連接,這樣一個完成的請求就結束了
  • Nginx最大連接數:
    • worker_processes:worker角色的進程個數
    • worker_connections:每一個worker進程能并發處理(發起)的最大連接數(包含所有連接數)
    • Nginx作為http服務器的時候:max_clients = worker_processes * worker_connections
    • Nginx作為反向代理服務器的時候:max_clients = worker_processes * worker_connections/4 (/4原因:因為瀏覽器默認會開啟2個連接到nginx
      server,而且nginx還會為每個連接使用fds(file
      descriptor文件描述符)從連接池建立connection到upstream后端。)
  • Nginx主要通過nginx.conf文件進行配置使用。在nginx.conf文件中主要分為:
    • 全局塊:一些全局的屬性,在運行時與具體業務功能(比如http服務或者email服務代理)無關的一些參數,比如工作進程數,運行的身份等
    • event塊:參考事件模型,單個進程最大連接數等
    • http塊:設定http服務器
    • server塊:配置虛擬主機
    • location塊:配置請求路由及頁面的處理情況等

location配置:

虛擬主機配置實戰

虛擬主機概念
所謂虛擬主機,在Web服務里就是一個獨立的網站站點(www.baidu.org),這個站點對應獨立的域名(也可能是IP或端口),具有獨立的程序及資源目錄,可以獨立地對外提供服務供用戶訪問。
這個獨立的站點在配置里是由一定格式的標簽段標記,對于Apache軟件來說,一個虛擬主機的標簽段通常被包含在http塊中。
虛擬主機類型
常見的虛擬主機類型有如下幾種。

基于域名的虛擬主機
所謂基于域名的虛擬主機,意思就是通過不同的域名區分不同的虛擬主機,基于域名的虛擬主機是企業應用最廣的虛擬主機類型,幾乎所有對外提供服務的網站都是使用基于域名的虛擬主機,例如:www.etiantian.org

基于端口的虛擬主機
同理,所謂基于端口的虛擬主機,意思就是通過不同的端口來區分不同的虛擬主機,此類虛擬主機對應的企業應用主要為公司內部的網站,例如:一些不希望直接對外提供用戶訪問的網站后臺等,訪問基于端口的虛擬主機地址里要帶有端口,例如:http://www.baidu.com:80

基于IP的虛擬主機
同理,所謂基于IP的虛擬主機,意思就是通過不同的IP區分不同的虛擬主機,此類虛擬主機對應的企業應用非常少見,一般不同業務需要使用多IP的場景都會在負載均衡器上進行VIP綁定,而不是在Web上通過綁定IP區分不同的虛擬機。
三種虛擬主機類型均可獨立使用,也可以互相混合一起使用,同學們應把基于域名的虛擬主機類型當作重點來學習掌握,其他的兩個類型了解即可。

基于域名的虛擬主機配置實戰
說明:本節內容再生產場景中是最常用到的,因此,同學們要優先并且熟練掌握。
修改配置文件Nginx.conf,編輯活自己重寫

worker_processes 1; events {worker_connections 1024; } http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {root html/www;index index.html index.htm;}} }

編輯完配置文件后,我們需要檢查語法

[root@localhost conf]# /application/nginx/sbin/nginx -t nginx: the configuration file /application/nginx-1.10.2//conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.10.2//conf/nginx.conf test is successful

然后由于web的存放路徑是相對路徑,因此需要在html/下創建相應的目錄
如圖:

[root@localhost html]# cd /application/nginx/html/ [root@localhost html]# ls 50x.html index.html #原本的網頁文件 [root@localhost html]# mkdir www #創建一個目錄叫做www [root@localhost html]# echo "I am www" > www/index.html #寫入網頁文件 [root@localhost html]# cat www/index.html #查看一下 I am www [root@localhost html]# curl 192.168.0.100 #測試鏈接 I am www

接下來繼續增加一個域名的網站:

給第二個網站添加網頁文件,同第一個網頁一樣。

這是因為通過IP地址來訪問的話,nginx并不知道你想要訪問哪個站點,因此,他默認你是要訪問他配置文件里的第一個站點,也就是www.zxy.com
通過修改hosts映射我們可以訪問不同的站點。

總結

以上是生活随笔為你收集整理的Nginx工作原理及基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。