Nginx入門到實戰(1)基礎篇

1、環境

服務器版本:CentOS 7.2php

爲了保證學習階段不遇到奇怪的事情,請保證如下四點(大神選擇性無視)html

  1. 確認系統網絡
  2. 確認yum可用
  3. 確認關閉iptables
  4. 確認停用selinux
#查看iptables狀態
systemctl status firewalld.service
#關閉防火牆(臨時關閉)
systemctl stop firewalld.service
#查看SELinux狀態 
getenforce
#臨時關閉SELinux 
setenforce 0

安裝一些系統基本工具,正常狀況系統都會自帶(沒有在裝哦)mysql

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim

2、Nginx是什麼?

Nginx是一個開源且高性能、可靠的HTTP中間件、代理服務
其餘的HTTP服務:linux

  1. HTTPD-Apache基金會
  2. IIS-微軟
  3. GWS-Google(不對外開放)

近幾年,Nginx的市場佔有率愈來愈高,一度飆升,爲何呢?接下來咱們就知道了!nginx

3、咱們爲何選擇Nginx?

1. IO多路複用epoll(IO複用)c++

如何理解呢?舉個例子吧!
有A、B、C三個老師,他們都遇到一個難題,要幫助一個班級的學生解決課堂做業。
老師A採用從第一排開始一個學生一個學生輪流解答的方式去回答問題,老師A浪費了不少時間,而且有的學生做業尚未完成呢,老師就來了,反反覆覆效率極慢。
老師B是一個忍者,他發現老師A的方法行不通,因而他使用了影分身術,分身出好幾個本身同一時間去幫好幾個同窗回答問題,最後還沒回答完,老師B消耗光了能量累倒了。
老師C比較精明,他告訴學生,誰完成了做業舉手,有舉手的同窗他纔去指導問題,他讓學生主動發聲,分開了「併發」。
這個老師C就是Nginx。sql

2. 輕量級vim

  • 功能模塊少 - Nginx僅保留了HTTP須要的模塊,其餘都用插件的方式,後天添加
  • 代碼模塊化 - 更適合二次開發,如阿里巴巴Tengine

3. CPU親和服務器

把CPU核心和Nginx工做進程綁定,把每一個worker進程固定在一個CPU上執行,減小切換CPU的cache miss,從而提升性能。網絡

3、安裝與目錄

本人使用了鳥哥的lnmp集成包 https://lnmp.org,簡單方便-推薦!

#執行這句語句,根據指引,將安裝 nginx php mysql 可進入lnmp官網查看更詳細的過程
#默認安裝目錄/usr/local
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp

#默認安裝目錄
/usr/local

4、基本配置

#打開主配置文件,若你是用lnmp環境安裝
vim /usr/local/nginx/conf/nginx.conf

----------------------------------------

user                    #設置nginx服務的系統使用用戶
worker_processes        #工做進程數 通常狀況與CPU核數保持一致
error_log               #nginx的錯誤日誌
pid                     #nginx啓動時的pid

events {
    worker_connections    #每一個進程容許最大鏈接數
    use                   #nginx使用的內核模型
}

咱們使用 nginx 的 http 服務,在配置文件 nginx.conf 中的 http 區域,配置無數個 server ,每個 server 對應這一個虛擬主機或者域名

http {
    ... ...        #後面再詳細介紹 http 配置項目
    
    server {
        listen 80                          #監聽端口;
        server_name localhost              #地址
        
        location / {                       #訪問首頁路徑
            root /xxx/xxx/index.html       #默認目錄
            index index.html index.htm     #默認文件 
        }        
        
        error_page  500 504   /50x.html    #當出現以上狀態碼時重新定義到50x.html        
        location = /50x.html {             #當訪問50x.html時
            root /xxx/xxx/html             #50x.html 頁面所在位置
        }        
    }
    
    server {
        ... ... 
    } 
}

一個 server 能夠出現多個 location ,咱們對不一樣的訪問路徑進行不一樣狀況的配置
咱們再來看看 http 的配置詳情

http {
    sendfile  on                  #高效傳輸文件的模式 必定要開啓
    keepalive_timeout   65        #客戶端服務端請求超時時間
    log_format  main   XXX        #定義日誌格式 代號爲main
    access_log  /usr/local/access.log  main     #日誌保存地址 格式代碼 main
}

4、模塊

查看 nginx 已開啓和編聯進去的模塊,模塊太多了,就不在這長篇大論,有須要自行百度吧~

#大寫V查看全部模塊,小寫v查看版本
nginx -V
# 查看此配置文件 是否存在語法錯誤
nginx -tc /usr/local/nginx/conf/nginx.conf
相關文章
相關標籤/搜索