Nginx作為web服務器的使用配置

概述

    Nginx是一款免費開源的web服務器,同時也可以作為http、imap/pop3協議進行反代服務器,本篇介紹一些nginx作為web服務器方面的相關配置,具體包含:

    1、nginx基礎概念介紹

    2、nginx核心模塊配置指令介紹

    3、ngx_http_access_module模塊實現基于IP的訪問控制的配置

    4、ngx_http_basic_module模塊實現基于basic用戶認證的訪問控制的配置

    5、ngx_http_stub_status_module模塊實現web化查看nginx狀態信息的配置

    6、ngx_http_referer_module模塊實現基于引用的訪問控制(防盜鏈)的配置

    7、ngx_http_log_module模塊實現nginx日志管理的配置

    8、ngx_http_gzip_module模塊實現響應報文壓縮傳輸的配置

    9、ngx_http_ssl_module模塊實現nginx支持https協議的配置

    10、ngx_http_rewrite_module模塊實現URL重寫

    11、ngx_http_fastcgi_module模塊實現nginx與PHP的結合

    12、實戰一:LNMP部署wordpress

    13、實戰二:LNMP部署phpMyAdmin,并實現https的訪問
                

               

第一章    nginx基礎概念介紹

    1、IO基礎概念

        同步/異步:關注的是消息通知機制,也就是被調用者在任務完成后是否通知調用者任務完成的消息

            同步:等待對方返回消息

    異步:被調用者通過狀態、通知或回調方法,通知調用者被調用者的運行狀態

        阻塞/非阻塞:關注調用者在等待結果返回之前所處的狀態

            阻塞:調用者在等待被調用者的結果返回之前,會被掛起,不能做其他任何事情,就是阻塞

            非阻塞:調用者在等待被調用者的結果返回之前,不會被掛起,可以做其他任務,就是非阻塞

        

    2、常見IO模型

        I/O類型:

            網絡IO:本質是socket讀取

            磁盤IO:數據流

    

        無論是網絡IO還是磁盤IO都會經歷兩個階段:

            第一步:等待數據準備完成階段。也就是數據首先會從SOCKET或磁盤上加載到內核的內存空間(內核緩沖區)

            第二步:數據從內核復制到進程。數據從內核內存的緩沖區,復制到用戶空間的進程的內存中

    

        阻塞型IO:

            從請求發起到請求結束,整個過程都是出于阻塞狀態;

        非阻塞型IO:

            在等待數據準備階段,也就是從磁盤到內核內存這個階段是處于盲等待階段,請求方不斷的詢問被請求方的資源是否準備好了。在第2階段,也就是請求的內容從內核內存復制到用戶內存時,是處于阻塞狀態的。

        復用型IO:

            在準備階段,請求是交給一個中間代理,在內核中默認已經提供,一個是基于BSD的select(),一個是基于sysv風格的poll(),此種IO模型下,請求不直接發送給被請求方,而是發送給select()這種代理。故在第1階段,是阻塞在代理上,而不是服務器上,這樣就可以同時發起多個IO請求,在第二解段,也是出于阻塞狀態

        事件驅動IO:

            第一階段是非阻塞的,但是會有通知機制,也就是說請求的資源準備好了之后,會通知請求者,進行第二步的操作;第二步依舊是阻塞狀態

        異步IO:整個過程都是非阻塞的

        1圖片1.png

      

    3、nginx的程序架構

        blob.png

            

        

        一個master進程,可生成一個或多個worker進程

    master:加載配置文件,管理worker進程,平滑升級,…

    worker:http服務,http代理,fastcgi代理…     

        緩存相關的進程:

            cache loader:載入緩存對象

            cache manager:管理緩存對象

      

    4、nginx的模塊分類

        核心模塊:core module,nginx實現功能的核心模塊

        標準模塊(自帶模塊):nginx自帶的模塊

            標準http模塊

            可選http模塊

            郵件相關模塊

            stream模塊(1.9版本之后才引入的,用于支持tcp、udp協議的反代模塊)

        第三方模塊:需要自己額外編譯安裝添加的第三方模塊

        一般模塊會有專用該模塊的配置指令,還會引入相關配置的變量

     

      

第二章    nginx核心模塊配置指令介紹

      

    1、nginx核心模塊配置指令介紹

    core.png

     

    2、調整以下參數的值,驗證配置是否有效

        worker_processes 數字|auto ;

        worker_cpu_affinity CPUMASK1 [CPUMASK2] …;

        worker_priority 數字;

    blob.png

    blob.png

  

    3、定義基于名稱,端口,ip的虛擬主機

    blob.png

    blob.png

    blob.png

    blob.png

    4、location中alias和root的定義和使用

    blob.png

    blob.png

    blob.png

    blob.png

    blob.png

   

第三章    ngx_http_access_module模塊實現基于IP的訪問控制的配置

   

    1、access模塊相關配置指令介紹

    access.png

    2、測試基于IP的訪問控制

    blob.png

    blob.png

    blob.png

     

第四章    ngx_http_basic_module模塊實現基于basic用戶認證的訪問控制的配置

     

    1、basic認證相關配置指令介紹

    basic.png

    2、測試基于basic用戶認證的訪問控制

    blob.png

    blob.png

    blob.png

    blob.png      

    blob.png

    blob.png

    blob.png

        

第五章    ngx_http_stub_status_module模塊實現web化查看nginx狀態信息的配置

     

    1、stub_status模塊相關配置參數介紹

    status.png

    

    2、status頁面的配置    

    blob.png

    blob.png

            

第六章    ngx_http_referer_module模塊實現基于引用的訪問控制(防盜鏈)的配置

     

    1、referer模塊相關配置參數介紹

    referer.png

    

    2、定義referer相關示例

    blob.png

    blob.png

        

第七章    ngx_http_log_module模塊實現nginx日志管理的配置

     

    1、log模塊相關配置參數介紹

    log.png

        

     

第八章    ngx_http_gzip_module模塊實現響應報文壓縮傳輸的配置

     

    1、gzip模塊相關配置參數介紹

    gzip.png

     

第九章    ngx_http_ssl_module模塊實現nginx支持https協議的配置

     

    1、ssl模塊相關配置參數介紹

    ssl.png

       

第十章    ngx_http_rewrite_module模塊實現URL重寫

     

    1、rewrite模塊相關配置參數介紹

    rewrite.png

    2、rewrite示例:

    blob.png

    blob.png     

    blob.png

      

第十一章    ngx_http_fastcgi_module模塊實現nginx與PHP的結合

     

    1、fastcgi模塊相關配置參數介紹

    fastcgi.png

     

第十二章    實戰一:LNMP部署wordpress

    

    1、環境介紹:

        CentOS7.2系統,地址為10.1.32.72

        rpm包安裝Nginx-1.10版本

        yum安裝mariadb-server以及php-fpm

    2、安裝相關程序包

    blob.png

    blob.png

    

    3、按需修改php-fpm配置文件,mariadb配置文件,啟動php-fpm和mariadb

    blob.png

    blob.png

    4、修改nginx配置文件,啟動nginx

    在nginx配置文件中http段加入如下配置,新建一個虛擬主機

    1477487179627310.png

    1477487323178267.png    

      

    5、提供wordpress程序包,創建wordpress數據庫,授權一個數據庫用戶,web初始化安裝wordpress

    blob.png    

    blob.png

    blob.png

    blob.png

第十三章    實戰二:LNMP部署phpMyAdmin,并實現https的訪問

    1、環境說明

        基于上個實驗的部署的LNMP平臺,證件一個基于ssl的虛擬機,然后將phpMyadmin部署在該ssl虛擬機內部

    2、利用本機作為私有CA服務器,頒發證書

    blob.png

    blob.png

    blob.png

    blob.png    

     

    3、修改nginx配置文件,新建一個https虛擬主機

    ssl示例.png

    blob.png

    

    4、提供phpMyadmin,然后web化安裝

    blob.png

    blob.png

    blob.png

原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/54617

(0)
M20-1倪文超M20-1倪文超
上一篇 2016-10-27
下一篇 2016-10-27

相關推薦

  • 在馬幫的宣言

    好好學習,在這半年時間讓自己的道路上再邁出一大步

    Linux干貨 2016-10-28
  • iptables基礎詳解

    一.iptables基礎認知二.iptables使用格式  一.iptables簡介   1.Iptabels是與Linux內核集成的包過濾防火墻系統,幾乎所有的linux發行版本都會包含Iptables的功能。如果 Linux 系統連接到因特網或LAN、服務器或連接 LAN 和因特網的代理服務器, 則Iptables有利于在 …

    2017-05-03
  • DNS詳解

    概述     互聯網訪問絕大多數都是基于域名的訪問,互聯網訪問的基礎是基于IP來實現的,因此,需要有一種將域名解析成IP的機制,讓用戶在利用域名訪問時,自動將域名轉換成為對應的IP,這就是DNS的功能,本章將介紹一些DNS相關的內容,具體分為:     1、DNS的基礎概念 &n…

    Linux干貨 2016-10-08
  • Python的模塊及詳解(1)

    psuitil模塊 filecmp模塊 pycurl模塊 一、系統性能信息模塊psuitil psutil是一個跨平臺庫(http://code.google.com/p/psutil/),能夠輕松實現獲取系統運行的進程和系統利用率(包括CPU、內存、磁盤、網絡等)信息。它主要應用于系統監控,分析和限制系統資源及進程的管理。它實現了同等命令行工具提供的功能,…

    2018-01-15
  • linux終端的類型與linux發展歷史

    一、linux console的類型與說明 說明:        1 由于虛擬終端的實現,人們可以多用戶多任務的在一臺計算機操作系統上工作             2 在80或90年代的舊電腦上,人們只能用分屏這樣的方法來實現多用戶,多任務的工作  …

    Linux干貨 2016-11-03
欧美性久久久久