服務器種類: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
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地址,查看結果