目錄html
nginx是一個開源的,支持高性能,高併發的www服務和代理服務軟件。它是一個俄羅斯人lgor sysoev開發的,做者將源代碼開源出來供全球使用。 nginx比它大哥apache性能改進許多,nginx佔用的系統資源更少,支持更高的併發鏈接,有更高的訪問效率。 nginx不可是一個優秀的web服務軟件,還能夠做爲反向代理,負載均衡,以及緩存服務使用。 安裝更爲簡單,方便,靈活。 nginx能夠說是很是nb了
Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等獲得了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。前端
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增長變量
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.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; ...
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文件
location / { deny 你想限制的ip; root /opt/s17dnf; index index.html index.htm; }
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.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; }