Linux - nginx基礎及經常使用操做

Linux - nginx基礎及經常使用操做

nginx是一個開源的,支持高性能,高併發的www服務和代理服務軟件。它是一個俄羅斯人lgor sysoev開發的,做者將源代碼開源出來供全球使用。
nginx比它大哥apache性能改進許多,nginx佔用的系統資源更少,支持更高的併發鏈接,有更高的訪問效率。
nginx不可是一個優秀的web服務軟件,還能夠做爲反向代理,負載均衡,以及緩存服務使用。
安裝更爲簡單,方便,靈活。
nginx能夠說是很是nb了
  • 支持高併發,能支持幾萬併發鏈接
  • 資源消耗少,在3萬併發鏈接下開啓10個nginx線程消耗的內存不到200M
  • 能夠作http反向代理和負載均衡
  • 支持異步網絡i/o事件模型epoll

Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等獲得了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。前端

Tengine淘寶nginx安裝流程

1.淘寶nginx的學習使用,安裝node

下載源碼包python

cd /opt

wget -c http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

2.卸載掉以前,學習yum時候,安裝的nginx軟件,linux

yum remove nginx -y

3。解決編譯安裝nginx的軟件依賴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

4.解壓縮源碼包,安裝web

解壓sql

tar -zxvf tengine-2.2.0.tar.gz

源碼編譯安裝三部曲apache

cd  tengine-2.2.0

    1.釋放makefile

    ./configure --prefix=/opt/tnginx220

cd tnginx220

    2.編譯nginx

    make 

    3.編譯安裝

    make install

4.編譯完成後,tnginx就能夠用了django

學習nginx的代碼目錄結構

[root@master tnginx220]# pwd

/opt/tnginx220

[root@master tnginx220]#

[root@master tnginx220]# ll

total 8

drwx------. 2 nobody root    6 Mar 11 08:51 client_body_temp

drwxr-xr-x. 2 root   root 4096 Mar 11 08:50 conf                #放nginx全部配置文件的地兒

drwx------. 2 nobody root    6 Mar 11 08:51 fastcgi_temp

drwxr-xr-x. 2 root   root   40 Mar 11 08:50 html                #存放前端 html文件的      

drwxr-xr-x. 2 root   root 4096 Mar 11 08:50 include

drwxr-xr-x. 2 root   root   41 Mar 11 08:52 logs                #nginx的日誌文件夾

drwxr-xr-x. 2 root   root    6 Mar 11 08:50 modules

drwx------. 2 nobody root    6 Mar 11 08:51 proxy_temp

drwxr-xr-x. 2 root   root   35 Mar 11 08:50 sbin                #存放nginx二進制命令的

drwx------. 2 nobody root    6 Mar 11 08:51 scgi_temp

drwx------. 2 nobody root    6 Mar 11 08:51 uwsgi_temp

5.啓動淘寶nginx

./nginx

6.添加linux的PATH變量,快捷使用nginx命令

echo $PATH  

PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tnginx220/sbin"

永久添加變量環境:

 vim ~/.bash_profile

修改/etc/profile文件,經過vi或vim增長變量

nginx的主配置文件nginx.conf

http內核模塊

//公共的配置定義在http{}

http {  //http層開始

...    

    //使用Server配置網站, 每一個Server{}表明一個網站(簡稱虛擬主機)

    'server' {

        listen       80;        //監聽端口, 默認80

        server_name  localhost; //提供服務的域名或主機名

        access_log host.access.log  //訪問日誌

        //控制網站訪問路徑

        'location' / {

            root   /usr/share/nginx/html;   //存放網站代碼路徑

            index  index.html index.htm;    //服務器返回的默認頁面文件

        }

        //指定錯誤代碼, 統必定義錯誤頁面, 錯誤代碼重定向到新的Locaiton

        error_page   500 502 503 504  /50x.html;

    }

    ...

    //第二個虛擬主機配置

    'server' {

    ...

    }

    

    include /etc/nginx/conf.d/*.conf;  //包含/etc/nginx/conf.d/目錄下全部以.conf結尾的文件

}   //http層結束

基於域名的多虛擬主機實戰

一個服務器上,能夠運行兩個乃至多個網站

注意: 防火牆端口問題

1.環境準備,準備好2個域名 ,這裏是模擬的本地域名解析 ,找到hosts文件
因爲咱們是想配置windows,能夠訪問不一樣的 域名,所以配置windows的hosts

192.168.11.65  dnf.com 

    192.168.11.65  xiaohua.com

  編輯文件 C:\Windows\System32\drivers\etc\hosts
寫入

2.配置nginx支持多虛擬主機

修改nginx.conf 修改2個server虛擬主機的配置

dnf的虛擬主機

server {

    listen 80;

    server_name  dnf.com;

    # 當咱們訪問s17dnf.com:80/的時候,就進入這個虛擬主機,且找到這個location,進行網站資源分配

    location / {

        root /opt/s17dnf/;

        index index.html;

    }

}

第二個虛擬主機,s17校花網

server{

    listen 80;

    server_name  xiaohua.com;

    

    location / {
        root /opt/s17xiaohua/;
        index index.html;
    }

}

分別修改兩個網址的根目錄數據

mkdir -p /opt/{s17dnf,s17xiaohua}

分別在/opt/s17dnf/建立index.html 

/opt/s17xiaohua/建立index.html

3.修改完配置文件,檢測語法

nginx -t

4.平滑加載nginx(不重啓nginx,從新讀取配置文件)

nginx -s reload

nginx的訪問日誌功能

編輯 nginx.conf

打開註釋

http {

    include       mime.types;

    default_type  application/octet-stream;

    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;

...

網站的404頁面優化

1.編輯nginx.conf ,配置以下:

server {
    listen       80;
    server_name  s17dnf.com;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   /opt/s17dnf;
        index  index.html index.htm;
    }
    #打開這個參數的配置,開啓錯誤頁面  
    error_page  404           /404.html;
    error_page  401 402 403           /403.html;
    }

2.編輯/opt/s17dnf下 HTML文件

拒絕某些ip訪問

location / {

            deny  你想限制的ip;

            root   /opt/s17dnf;

            index  index.html index.htm;

        }

nginx的反向代理

nginx反向代理的實現

1.實驗環境準備

192.168.11.229   真實資源服務器,模擬django       ,理解爲房東的房屋資源 

192.168.11.136   nginx代理服務器                 ,理解爲 房屋中介

2.思路
咱們做爲客戶端,訪問 代理服務器, ,代理服務器,將資源服務器上的東西,進行返回

3.配置 資源服務器

192.168.11.229  s17dnf.com

4.配置代理服務器

192.168.11.136 

修改192.168.11.136這臺機器的nginx配置文件,開啓反向代理
配置nginx.conf的server{}以下

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;

        location / {
                #反向代理參數,當咱們請求192.168.11.136:80/的時候,進入這裏server,而後location進行資源分配 
                    proxy_pass   http://192.168.11.229;     #就是間接的訪問了 192.168.11.229:80/
                }
        
           }

nginx負載均衡簡單實現

思路介紹:

nginx.conf>http>定義一個負載均價池

upstream  myserver  {

server   192.168.11.229;

server   192.168.11.xx;  

}

nginx.conf>http>經過反向代理轉發

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;



        location / {
        #反向代理參數,當咱們請求192.168.11.136:80/的時候,進入這裏server,而後location進行資源分配 
            proxy_pass   myserver;     #就是間接的訪問了 192.168.11.229:80/
        }

   }

配置nginx負載均衡:

環境準備,三臺服務器

三臺機器都是經過nginx實現的

192.168.11.136  反向代理服務器  

192.168.11.229   資源服務器1    這個機器是返回的dnf頁面 

192.168.11.176   資源服務器2    這個配置的是 index.html  來了老弟

1.配置反向代理服務器 192.168.11.136

修改nginx.conf以下參數

定義負載均衡池

upstream s17server {

server 192.168.11.229;

server 192.168.11.176;

}

        #轉發請求給負載均衡池
        location / {
            proxy_pass   http://s17server;
        }

2.此時經過負載均衡器 192.168.11.136,進行訪問測試,默認是輪詢機制

3.upstream分配策略

weight 權重

upstream django {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000 weight=10;#這個節點訪問比率是大於8000的
}

ip_hash

每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器
upstream django {
    ip_hash;
       server 10.0.0.10:8000;
       server 10.0.0.11:9000;
}

backup

在非backup機器繁忙或者宕機時,請求backup機器,所以機器默認壓力最小

upstream django {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000;
       server node.oldboy.com:8080 backup;
}
相關文章
相關標籤/搜索