linux--nginx學習

nginx

1.nginx安裝編譯

1.yum install nginx(自動解決依賴) 
2.源代碼編譯安裝(優秀,自由選擇軟件版本,自定義第三方功能好比開啓https)
3.rpm手動安裝(垃圾)

2.下載tengine

最好別再root在操做,在opt在執行該條命令
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz

3.解壓縮

ls查看下載後的文件
解壓縮:tar -zxvf tengine-2.3.2.tar.gz 
進入解壓縮後的文件:cd tengine(解壓縮後的)

4.編譯

4.1指定安裝路徑

./configure --prefix=/opt/tbnginx/     /opt/tbnginx/ 爲安裝路徑

4.2開始編譯

make命令  生成makefile

4.3開始安裝

make install

5.配置環境變量

進入到 tengine下的sbin目錄
須要把PATH寫入/etc/profile #每次開機都加載 
    vim /etc/profile

把PATH寫入到環境變量中:                     PATH="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tbnginx/sbin"

手動讀取,讓PATH生效
    source /etc/profile

6.啓動nginx,檢查進程,端口

檢查進程:ps aux | grep nginx
檢查端口:netstat -tunlp | grep 80
直接輸入nginx命令,第一次是啓動nginx
nginx -s stop  #中止
nginx -s reload  #平滑重啓,不中止進程,從新讀取配置文件 
nginx  -t  #檢測nginx.conf語法是否正確,更安全


在瀏覽器中輸入IP:端口訪問

7.nginx的配置文件

[root@bogon tbnginx]# ls
    conf    存放nginx的配置文件
    html    存放nginx靜態文件的
    logs    nginx的運行日誌,錯誤日誌,訪問日誌
    sbin    存放可執行命令

nginx的靜態文件服務功能

nginx.conf 中定義的server{}虛擬主機關鍵詞定義html

1.
    [root@bogon tbnginx]# cd tbnginx/
    [root@bogon tbnginx]# cd html/
2.
     [root@bogon html]# ls
        50x.html  index.html
     執行 Vim index.html  #進入該問文件的編輯模式

server{}定義虛擬主機功能python

server {
        #定義網站的端口
        listen       81;
        #定義網站匹配的域名 
        server_name  localhost;
        #server_name  _;
        #server_name  www.mypython.com;
    #定義虛擬主機的訪問日誌功能,記錄用戶的ip,以及請求信息,和爬蟲代理後面的真實ip等功能
    #access_log  logs/host.access.log  main;
    #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
    # location做用是匹配url,如同 django的 url.py功能同樣
    # 最低級匹配,當請求時 192.168.16.85:81/ 就進入以下location
    location / {
       #這個root關鍵詞 是定義靜態文件存放目錄的
        root   /opt/xx.html;
    #index參數,定義網站首頁文件名的 
        index  index.html index.htm;
    }
    #  這個location能夠定義多個,好比 你想讓 192.168.16.85:81/static/js/luffy.js
    location  /static  {
    #給路徑添加別名 
    alias   /opt/crm/static/;}

nginx的多虛擬主機功能

一臺服務器,基於域名的不一樣,訪問不一樣的網站資料
也就是準備2個server{}的定義linux

本地的hosts文件
C:\Windows\System32\drivers\etc\hostsnginx

第一個server{ } 虛擬主機 ,www.pian.com

server {
                #定義網站的端口
                listen       80;
                #定義網站匹配的域名 
                server_name  www.pian.com;
                #server_name  _;
                #server_name  www.mypython.com;

                #定義虛擬主機的訪問日誌功能,記錄用戶的ip,以及請求信息,和爬蟲代理後面的真實ip等功能
                #access_log  logs/host.access.log  main;
                #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
                # location做用是匹配url,如同 django的 url.py功能同樣
                # 最低級匹配,當請求時 192.168.16.85:81/ 就進入以下location
                location / {
                   #這個root關鍵詞 是定義靜態文件存放目錄的
                    root   /opt/pian;
                #index參數,定義網站首頁文件名的 
                    index  index.html index.htm;
                }
                #當你的請求時 www.pian.com/static/55kai.jpg  
                location  /static  {
                #給路徑添加別名 
                alias   /opt/crm/static/;
                        #http://www.pian.com/static/360wallpaper.jpg
        }
    
    }

第二個虛擬主機 www.xxlol.com

server {
    listen  80;
    server_name  www.xxlol.com;
    location  / {
    root  /opt/xxlol;
    index   index.html;
    }

}

nginx的訪問日誌功能

打開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;
    
    
進入到cd tbnginx/logs
實時監測 :tail -f access.log
當再次訪問的時候logs就會多一條 記錄

nginx 404錯誤頁面優化

location / {
           #這個root關鍵詞 是定義靜態文件存放目錄的
            root   /opt/pian;
        #index參數,定義網站首頁文件名的 
            index  index.html index.htm;
        }

            error_page  404              /404.html;
        
        對/404.html進行編輯或添加新的內容
        keepalive_timeout : 60

nginx配置反向代理

須要準備3臺機器
1是客戶端,發請求的
2是代理服務器,須要安裝nginx,實現代理轉發功能
3是資源服務器,提供數據的 

正確的操做應該是
準備一個windows機器,兩個linux機器(一個是安裝nginx用做代理,一個啓動django提供數據)
我考慮到你們機器不行
解決辦法

在一臺linux上,啓動一個nginx,第一個server{}虛擬主機標籤,做用是反向代理

第二個server{}虛擬主機標籤,模擬是另外一臺linux,提供數據的 


瀏覽器  ->  nginx  ->  django
瀏覽器  <-  nginx  <-  django

配置反向代理

server {
    listen       80;
    server_name  _;
    location / {
    #反向代理的參數 
    proxy_pass   http://127.0.0.1:81;
    }
    error_page  404              /404.html;
}

nginx負載均衡

環境準備
準備四臺機器
第一臺是window,用於瀏覽器法請求

第二臺個是nginx,安裝nginx,進行請求分發,負載均衡 

第三臺,講道理,應該運行django

第四臺,同樣的,也是運行django代碼

在一個linux機器上,安裝一個nginx軟件,經過多個server{}模擬多臺機器的工做

nginx的環境準備,nginx.conf配置文件

#經過upstream關鍵詞,定義服務器地址池
upstream  server  {
server  127.0.0.1:81;
server  127.0.0.1:82;
server  127.0.0.1:83;
}

   #定義第一個虛擬主機 server{} ,功能是 進行反向代理,負載均衡 
   server {
        listen 80;
        server_name _;
        location  /  {
        proxy_pass http://myserver;
}

}
#第二個server,模擬第一臺django
server  {
listen  81;
server_name _;
location  /  {
    root  /opt/django1;
    index  index.html;
}
}
#定義第三個server,模擬第二臺django
server {
  listen 82;
server_name  _;
location  / {
  root  /opt/django2;
  index  index.html;
}
}

#定義第四個server,模擬第三臺django,講道理,這三臺django應該提供同樣的數據 
server {
  listen 83;
server_name  _;
location  / {
  root  /opt/django3;
  index  index.html;
}
}

nginx的負載均衡規則

1.輪訓機制 ,每一個機器,解析一次
2.權重機制 ,哪臺機器的權重高,請求優先發給誰,有權重比例設置
        upstream  myserver  {
    server  127.0.0.1:81 weight=1;  # weight權重 安比例分配
    #server  127.0.0.1:82 weight=3;
    server  127.0.0.1:83 weight=4;
    }

3.ip_hash  ,真對用戶的ip地址獲得哈希值,永久發給一臺機器 ,ip哈希方式,不得和權重一塊兒用 
    #經過upstream關鍵詞,定義服務器地址池
    upstream  myserver  {
    server  127.0.0.1:81 ;
    #server  127.0.0.1:82 ;
    server  127.0.0.1:83 ;
    ip_hash;
    }

4.url_hash  ,不用
相關文章
相關標籤/搜索