Linux -- nginx

一. 網絡服務

  web服務器和web框架的關係

web服務器(nginx):接收HTTP請求(例如www.baidu.com)並返回數據

web框架(django,flask):開發web應用程序,處理接收到的數據

  nginx

# 面試技巧
支持高併發,能支持幾萬併發鏈接
資源消耗少,在3萬併發鏈接下開啓10個nginx線程消耗的內存不到200M
能夠作http反向代理和負載均衡
支持異步網絡i/o事件模型epoll

二 . Tengine

Tengine是由淘寶網發起的web服務器項目,在nginx基礎上支持高併發,而且性能很是的穩定.  

  安裝Tengine

複製代碼
# 1. 檢測是否在Linux上是否經過yum安裝了nginx(只有用yum安裝才能用下面方法檢測)
rpm  -qi  nginx
# 若是有返回值就證實安裝了,而後刪除它
    yum remove nginx -y 
# 2. 安裝nginx依賴包 
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel 
  ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y # 3.源代碼編譯安裝tenginx 1.下載淘寶nginx的源代碼包 wget http://tengine.taobao.org/download/tengine-2.3.0.tar.gz 2.解壓縮源代碼 tar -zxvf tengine-2.3.0.tar.gz 3.切換進入nginx源代碼目錄 進行編譯安裝 cd tengine-2.3.0 4.釋放編譯文件,指定安裝路徑 ./configure --prefix=/opt/s18tngx/ 5.開始編譯且安裝 make && make install 6.查看nginx的安裝目錄有哪些東西 [root@wangdachui s18tngx]# ls # conf 存放nginx的配置文件目錄的 # html 存放前端文件的地兒 # logs 存放nginx日誌文件的目錄 # sbin 存放nginx的可執行命令 7.配置nginx的環境變量,支持快捷啓動 [root@localhost sbin]# vim /etc/profile 把sbin的絕對路徑加到path裏 8.使其生效 source /etc/profile 9.啓動nginx 直接輸入nginx命令 10.修改nginx的首頁文件 存放nginx安裝目錄下的html文件夾中,名爲index.html的文件 11.vim index.html 寫入想要展現的頁面
複製代碼

三 . nginx配置文件學習

Nginx主配置文件/etc/nginx/nginx.conf是一個純文本類型的文件,整個配置文件是以區塊的形式組織的。通常,每一個區塊以一對大括號{}來表示開始與結束

  nginx主配置文件解析

    coreModule核心模塊html

user www;                       #Nginx進程所使用的用戶
worker_processes 1;             #Nginx運行的work進程數量(建議與CPU數量一致或auto)
error_log /log/nginx/error.log  #Nginx錯誤日誌存放路徑
pid /var/run/nginx.pid          #Nginx服務運行後產生的pid進程號

    event事件模塊前端

events {            
    worker_connections  //每一個worker進程支持的最大鏈接數
    use epool;          //事件驅動模型, epoll默認
}

    http內核模塊python

複製代碼
# 公共的配置定義在http{}
http {   #http層開始
...    
     gzip  on;   # 開啓壓縮圖片功能
    # 使用Server配置網站, 每一個Server{}表明一個網站(簡稱虛擬主機)
    'server' {
        listen       80;                 #監聽端口, 默認80
        server_name  localhost;  # 提供服務的域名或主機名
        access_log host.access.log  # 訪問日誌
        # 控制網站訪問路徑
        'location' / {
            root   /opt/share/nginx/html;   # 存放網站代碼路徑
            index  index.html index.htm;    # 服務器返回的默認頁面文件
        }
        # 指定錯誤代碼, 統必定義錯誤頁面, 錯誤代碼重定向到新的Locaiton
        error_page   500 502 503 504  /50x.html;
    }
}
複製代碼

  nginx功能學習

# 1. C:\Windows\System32\drivers\etc\hosts   用notepad++打開
修改windows的hosts文件,就是寫一個假的域名
# 2.寫入測試域名,以下
192.168.81.130  www.s18lol.com   (格式必須是這樣)  
而後輸入www.s18.lol.com 就訪問的是192.168.81.130

  配置nginx多虛擬主機實戰, 其實就是修改nginx.conf,寫入多個server標籤,支持多個虛擬主機

複製代碼
server {
        listen       80;
        server_name  www.s18dnf.com;
        location / {
            root   /opt/s18dnf/;    # 須要建這個文件夾
            index  index.html index.htm;
        }   
        #第二個虛擬主機 lol網址
server  {
    listen 80;
    server_name  www.s18lol.com;
    location  /  {
        root   /opt/s18lol/;   # 須要建這個文件夾
        index index.html;
    }
}
複製代碼

  新建所須要的文件夾

mkdir -p /opt/s18dnf/   /opt/s18lol/
# 在這兩個文件夾下分別:
touch index.html     # 而後去copy網頁

  nginx多虛擬主機的兩個概念

1.若是沒有域名,寫ip地址的話,虛擬主機是自上而下的加載順序 ,
2.若是有域名,nginx會基於域名區分虛擬主機

  測試語法是否正確

[root@localhost conf]# nginx -t

  改完配置,從新加載nginx,平滑重啓

nginx -s reload 

四 . 學習nginx的狀態模塊功能

  1.修改nginx,conf的配置文件

# 找到一個server虛擬主機,寫入以下配置 (必定寫在server裏面)
location /status  {
        stub_status on;
}    

  2.重啓nginx,加載status狀態模塊

nginx -s reload 

  3.經過ab壓測命令,去給網站發n多個請求

# 安裝ab壓測命令工具
yum -y install httpd-tools

  4.給服務器nginx發10000個請求

ab -kc 1000 -n 10000 http://192.168.81.130/

六 . nginx的access.log訪問日誌功能

複製代碼
# 編輯nginx.conf打開以下配置參數
    打開以下注釋
    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  logs/access.log  main;
    access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;
    
    重啓nginx查看logs下的日誌文件,檢測用戶請求信息
    # cd 到 logs(這樣才能執行下面的命令)
    tail -f  logs/access.log 
複製代碼

七 . nginx的404頁面

複製代碼
修改nginx.conf的404錯誤頁面優化
找到以下配置
   #當錯誤狀態碼是 40x系列就返回,nginx目錄下的40x.html
        error_page  404 403 402 400 401               /40x.html;
        
    cd /opt/s18lol/
    vim 40x.html
        # 寫入想要的頁面
    
    重啓nginx 查看404頁面    
複製代碼

八 . nginx限制ip訪問功能

複製代碼
# 找到nginx.conf修改以下代碼
        location / {
            #禁止192.168.226.0/24 這個地址段全部的ip訪問 
             # 192.168.226.0/24   # 0就是0-255字段,24是子網掩碼

            # 禁止 192.168.226.1 這個ip訪問
            deny  192.168.226.1 ; 
            root   /opt/s18dnf;
            index  index.html index.htm;
        }
複製代碼

九 . 實現nginx反向代理功能

複製代碼
# 環境準備  
準備2臺機器
一個是真實資源文件        192.168.81.130      就理解爲房東 ,提供dnf的資源界面
一個是反向代理服務器      192.168.81.131   理解爲中介,當咱們訪問中介,就訪問到dnf的網站資源

    1.分別在2臺機器,安裝nginx  
    
    2.資源服務器已經配置好,返回dnf頁面
    
    3.反向代理服務器配置以下
    
    vim編輯nginx.conf  找到第一個server虛擬主機
    修改配置以下
           server_name  192.168.81.131;

           location / {
                proxy_pass  http://192.168.226.128;
        }

    4.重啓nginx,查看反向代理效果
複製代碼
相關文章
相關標籤/搜索