Linux 6 Nginx

服務器種類:html

IIS:windows上的服務器node

Apache:Linux上一代的高性能服務器python

Nginx:Linux新一代高性能服務器nginx

經過curl -i xxxxx.xxxx命令能夠查看網絡請求信息以及使用的服務器。算法

 

nginx特色:sql

佔用的系統資源少,支持的併發數更多,還能夠做爲反向代理、負載均衡django

 

1、Nginx安裝配置flask

# 依賴庫
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
# 編譯安裝
1.下載源碼包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.解壓縮源碼
tar -zxvf nginx-1.12.0.tar.gz
3.配置,編譯安裝  開啓nginx狀態監測功能
./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module 
make && make install 
4.啓動nginx,進入sbin目錄,找到nginx啓動命令
cd sbin
./nginx #啓動
./nginx -s stop #關閉
./nginx -s reload #平滑重啓(修改了配置文件,不重啓就能加載)

2、Nginx目錄結構windows

  • conf 存放nginx全部配置文件的目錄,主要nginx.conf
  • html 存放nginx默認站點的目錄,如index.html、error.html等
  • logs 存放nginx默認日誌的目錄,如error.log access.log
  • sbin 存放nginx主命令的目錄,sbin/nginx

3、Nginx主配置文件解析瀏覽器

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

CoreModule核心模塊

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

events {            
    worker_connections  //每一個worker進程支持的最大鏈接數
    use epool;          //事件驅動模型, epoll默認
}
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層結束

4、Nginx多虛擬主機

能夠在一臺服務器上運行多個虛擬主機,不一樣的虛擬主機返回不一樣的頁面。

#多虛擬主機的配置
1.修改nginx底下的conf/nginx.conf ,修改信息以下
        server {
            listen       80;
            server_name  www.s14huoying.com;
            location / {
                #指明網頁根目錄在/opt/html/文件夾下
                root   /data/huoying;
                index  index.html index.htm;
            }
            }
        server {
            listen       80;
            server_name  www.s14hanju.com;
            location / {
                #指明網頁根目錄在/opt/html/文件夾下
                root   /data/hanju;
                index  index.html index.htm;
            }
            }
2.從新加載nginx配置文件
../sbin/nginx -t  #檢測語法
../sbin/nginx -s reload #平滑重啓 

3.準備不一樣的虛擬主機的站點資料
mkdir -p /data/{huoying,hanju}
放入不一樣的資料以下
├── hanju
│   ├── hanju.jpg
│   └── index.html
└── huoying
    ├── index.html
    └── mingren.jpg
    
4.寫入到本地dns解析文件,因爲我是在windows中經過瀏覽器訪問,應該在windows的hosts文件中添加記錄
hosts文件就是一個本地dns(就是將域名轉化成ip地址)強制解析的文件
windows的hosts文件就在這裏:C:\Windows\System32\drivers\etc\hosts ,寫入以下信息
192.168.12.96   www.s14huoying.com
192.168.12.96   www.s14hanju.com

5.在windows中,測試訪問多域名配置

5、Nginx狀態模塊

在配置文件中添加兩行便可:

location /status {
    stub_status on;
}

這樣訪問xxxxxx/status就能夠查看當前的鏈接數量等信息。

6、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; # 保存路徑
    
參數詳解:
$remote_addr    記錄客戶端ip
$remote_user    遠程用戶,沒有就是 「-」
$time_local    對應[14/Aug/2018:18:46:52 +0800]
$request     對應請求信息"GET /favicon.ico HTTP/1.1"
$status      狀態碼
$body_bytes_sent  571字節 請求體的大小
$http_referer  對應「-」  因爲是直接輸入瀏覽器就是 -
$http_user_agent  客戶端身份信息
$http_x_forwarded_for  記錄客戶端的來源真實ip 97.64.34.118


打開了功能以後,可一經過logs/access_log查看用戶身份信息
192.168.12.60 - - [06/Dec/2018:11:24:04 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "-"

 

7、反向代理

正向代理的是客戶端,是客戶端經過代理去訪問一個網站。

反向代理的是服務器,是當服務器接收到一個請求後轉發給代理服務器。

server {
       listen 80;
          server_name  www.s14huoying.com;
          location / {
          proxy_pass http://192.168.12.38;  #請求會直接轉發給http://192.168.12.38; 
}

 

8、集羣和負載均衡

集羣:就是用多臺服務器來共同運行一個nginx,保證多用戶能夠同時訪問,也避免一臺服務器宕機致使的整個服務癱瘓。

負載均衡:就是指定多個反向代理,可是nginx會自動幫咱們經過必定的算法切換不一樣的代理,讓多個代理處理的請求數達到一個平衡。

nginx負載均衡配置
1.環境準備,準備3臺服務器
192.168.12.96   nginx入口node1
192.168.12.67   應用服務器1
192.168.12.38   應用服務器2

2.關閉全部機器的防火牆


3.在node1節點上配置負載均衡配置(發牌人)
    1.修改配置文件nginx.conf ,寫入以下配置
            #定義負載均衡池名字叫作s14django
            upstream s14django {   
                #池子中存放2個服務器,默認輪詢方式調度服務器
                server 192.168.12.38:8000; 
                server 192.168.12.67:8000;
# server 192.168.12.67:8000 weight=2;
# server 192.168.12.38:8000 weight=3;
# 表示這兩個服務器處理請求的比例是2:3,這是按照權重調度服務器 } #root參數定義網頁的根目錄,能夠寫在虛擬主機內,局部變量 #若是寫在server標籤外,就是全局變量 root html; #虛擬主機1 server { listen
80; server_name www.s14huoying.com; location / { #當請求發送到www.s14huoying.com的時候,匹配到 / ,就執行如下代碼 proxy_pass http://s14django; #包含語法參數,將一個配置文件添加到當前虛擬主機生效,這個文件要手動建立 #這個proxy_params文件建立在/opt/nginx1-12/conf底下 include proxy_params; } } 2.手動建立這個參數文件 touch /opt/nginx1-12/conf/proxy_params 寫入信息 proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; 4.配置兩臺應用服務器 1.準備一個flask代碼,運行 pip3 install flask 2.準備代碼 myflask.py from flask import Flask app=Flask(__name__) @app.route('/') def hello(): return "<h1>我是偉華</h1>" if __name__=="__main__": app.run(host='0.0.0.0',port=8000) 3.啓動應用服務器 python3 myflask.py 5.經過訪問nginx負載均衡器入口,查看負載均衡 是否正常分配,默認是輪訓方式 1.訪問本身的nginx負載均衡的ip地址,查看結果
相關文章
相關標籤/搜索