Nginx淺談(一)

淺談nginx(一)

此文主要介紹nginx的基礎知識及其基本配置,一為鞏固,二為記錄

知識點

  • nginx的作用

  • nginx的基本配置框架

  • nginx一些常用模塊介紹

1、什么是nginx

    nginx是一款免費的,開源的,高性能的HTTP服務軟件,它不僅能
    夠支持反向代理服務器,而且也能當作IMPA/POP3代理服務。它穩
    定, 配置豐富,設置簡單,而且占用系統硬件資源少!這些特性
    使得它深受廣大用戶喜歡。

1.1 Nginx的程序架構

Nginx架構: master/worker

  • 一個主進程master:負責加載和分析配置文件,管理worker,并且可以平滑升級;

  • 一個或多個worker:由master生成,處理并響應用戶請求

  • 緩存相關進程:如cache loader、cache manager

特性:異步、事件驅動和非阻塞

  • 并發請求處理:通過kevent/epoll/select,/dev/poll

  • 文件IO:高級IO sendfile,異步,mmap

1.2 Nginx高度模塊化

Nginx是一個高度模塊化的程序,這高度模塊化的思想使得Nginx擁有巨大的優越性。它的5個大模塊分別為:核心模塊(包含主模塊main和事件模塊event),標準HTTP模塊,可選HTTP模塊,MAIL郵件模塊,第三方模塊

(1)核心模塊

  • main:主要用于配置錯誤日志、進程管理、權限控制等;

  • event:配置epoll、kqueue、select、poll等;

(2)標準HTTP模塊

  • 支持標準http功能

(3)可選http模塊

  • 主要用于拓展標準http功能,讓http能處理一些特殊的服務;

(4)郵件服務模塊

  • 郵件服務模塊使得Nginx能夠處理或代理IMAP、POP3、SMTP協議

(5)第三方模塊

  • Nginx的第三方模塊使得自身的功能變得非常豐富;

2、nginx的安裝及配置

在CentOS7下安裝nginx
官方下載好安裝包后,必須現裝好pcre-devel、openssl-devel及
zlib-devel,安裝Nginx依賴這三個包

2.1 編譯安裝:

        ~]# yum install pcre-devel openssl-devel zlib-devel
        ~]# useradd -r nginx
        ~]#  ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
        ~]# make && make install

2.2 配置:

Nginx配置文件存放位置:

主配置/etc/nginx/nginx.conf,主配置中會調用其他配置,其他配置文件放在/etc/nginx/include/conf.d/.conf*(任意以.conf結尾的文件都是)

主配置文件結構:~]#vim /etc/nginx/nginx.conf
            main block:主配置段,也即全局配置段;
                event {
                    ...
                }:事件驅動相關的配置;
            http {
                ...
            }:http/https 協議相關的配置段;
            mail {
                ...
            }
            stream {
                ...
            }

        http協議相關的配置結構
            http {
                ...
                ...:各server的公共配置
                server {
                    ...
                }:每個server用于定義一個虛擬主機;
                server {
                    ...
                    server_name
                    root
                    alias
                    location [OPERATOR] URL {
                        ...
                        if CONDITION {
                            ...
                        }
                    }
                }
            }
2.2.1 main程序段的相關配置

分類:

  • 正常運行必備的配置

    1. 定義user  :user  nginx;
    2. 定義pid文件路徑,指定nginx主進程號碼的文件路徑:pid  /var/run/nginx.pid;
    3. include file | mask,指明包含進來的其他配置文件:include   /etc/nginx/conf.d/*.conf;
    4. load_module file指明要裝載的動態模塊:load_module modules/ngx_http_geoip_module.so;
  • 優化性能相關的配置

    1. 定義worker進程的數量,通常應該為當前主機的cpu的物理核心數:worker_processes  1;
    2. worker_cpu_affinity CPU MASK,使用cpu內核,可定義為auto
             CPU MASK:
                        00000001:0號CPU
                        00000010:1號CPU
    例:worker_cpu_affinity  00000001 00000100;# 使用第1號和第3號cpu
    3. worker_priority number,指定worker進程的nice值,設定worker進程優先級;默認[-20,20]
    4. worker_rlimit_nofile number,worker進程所能夠打開的文件數量上限;
  • 用于調試及丁文問題相關的配置

    1. daemon on|off,是否以守護進程方式運行Nignx;
    2. master_process on|off,是否以master/worker模型運行nginx;默認為on;
    3. error_log file [level];
2.2.2事件驅動相關的配置
    events {
            ...
    }

1. worker_connections number,每個worker進程所能夠打開的最大并發連接數數量;
    nginx所能承受的最大客戶連接數量 = worker_processes * worker_connections
2. use method,指明并發連接請求的處理方法;
    例:use epoll;        # 
3. accept_mutex on | off,處理新的連接請求的方法;on意味著由各worker輪流處理新請求,Off意味著每個新請求的到達都會通知所有的worker進程;

2.2.3 http相關配置段

基本格式:

        http {
                ... ...
                server {
                    ...
                    server_name
                    root
                    location [OPERATOR] /uri/ {
                        ...
                    }
                }
                server {
                    ...
                }
            }

***ps:由于http相關配置下server段中涉及的模塊略多,所以另開篇幅——淺談Nginx(二)——-http下server配置***

原創文章,作者:yaoqin.liang,如若轉載,請注明出處:http://www.www58058.com/66643

(0)
yaoqin.liangyaoqin.liang
上一篇 2017-01-14 23:22
下一篇 2017-01-16 00:09

相關推薦

  • 第五周小練習

    1顯示當前系統上root,fedora或user1用戶的默認shell egrep "^(root|user1|fedora)" /etc/passwd|cut -d ':' -f 1,7 2找出/etc/rc.d/init.d/functions文件中某個單…

    Linux干貨 2016-12-12
  • centos6啟動故障及修復

    前言 前文中我們熟悉了linux的啟動流程,如果在啟動過程中文件丟失或者損壞了怎么辦呢?難道只有重裝系統這一條路嗎?那我們不是成了普通網管了嗎?作為專業的運維工程師,我們需要掌握如何快速修復系統啟動。 實驗1: 破壞/boot/grup/下的文件——-stage2 階段  不影響啟動  mv /boot/grub …

    2017-09-03
  • 條件判斷、文件查找與壓縮

    一、條件判斷 1.條件選擇if語句   選擇執行:   注意:if語句可嵌套 (1).單分支if 判斷條件:then   條件為真的分支代碼fi (2).雙分支if 判斷條件; then   條件為真的分支代碼else   條件為假的分支代碼fi (3).多分…

    Linux干貨 2016-08-15
  • Linux進程及作業管理總結

    一、簡介     在使用Windows操作系統中很多時候需要查看某些程序進程的運行情況,一般來說我們可以打開Windows提供的"任務管理器",然后點擊"進程"欄即可查看到當前系統運行的進程列表。例如偶爾出現系統內存、CPU占用過高的時候,我們往往都會查看進程列表,并找到當前占用內存或CPU過高的進…

    Linux干貨 2015-10-05
  • 關于磁盤管理的例子

    今天來說一個關于磁盤管理的例子,通過這個例子也順便了解一下此例子涉及到的一些相關命令、文件。 練習:創建一個2G的文件系統,塊大小為2048byte, 預留1%可用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/test目錄,且默認有acl掛載選項 思路:1.在/etc/fstab中定義開機自動掛載信息    &nbs…

    Linux干貨 2017-08-19
  • 運維工程師技能需求排行

    這是我今天在拉勾網搜索運維,翻完了4四頁也招聘信息之后得到的,我的目的是想要看看之后的學習,哪個更應該成為重點,有些在我意料之中,有些還真的沒想到,算是努力了一個小時的收獲吧,分享給大家。
    注意:其中的看法僅代表個人觀點,很多都是依靠我自己的學習經驗和工作經驗累積的

    Linux干貨 2017-12-12
欧美性久久久久