Linux之nginx入門

nginx入門

 詳見可參考:https://www.cnblogs.com/tiger666/p/10239307.html?tdsourcetag=s_pctim_aiomsghtml

1. 經常使用的WEB框架有哪些:

django 重量級別的框架,功能大而全, form表單,ORM, 內置的模塊很是多 600-2000req/spython

flask 輕量級的框架, 從第三方引入過來的 2500req/slinux

tornado(沒學過) 異步非阻塞 支持多用戶併發訪問3000req/snginx

sanic 是python3.5以後的一個框架, 20000req/sweb

 

咱們的WEB框架是用來處理用戶請求,獲取數據並返回給用戶查看面試

在上面開發應用程序用的sql

 

2. web服務器

是用來對外提供服務的, www服務apache

IISdjango

apache 很是普通的WEB服務器 對高併發沒有太大的支持flask

nginx 開源的,支持高併發,高性能的服務器

tengine 淘寶本身的nginx服務器,其實它的配置和nginx同樣

 

面試回答nginx技巧

支持高併發,能支持幾萬併發鏈接
資源消耗少,在3萬併發鏈接下開啓10個nginx線程消耗的內存不到200M
能夠作http反向代理和負載均衡
支持異步網絡i/o事件模型epoll

 

linux下測試訪問網站命令

curl -i 域名   # 訪問網站並返回網站內容(源代碼)
curl -I 域名   # 返回網站的服務器信息

3. nginx編譯安裝

1 安裝所須要的依賴庫

yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
2 下載nginx安裝源碼包 wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

3.解壓縮源碼 tar -zxvf nginx-1.12.0.tar.gz

4.配置,編譯安裝

./configure --prefix=/opt/nginx112

make && make install 
5.啓動nginx,進入sbin目錄,找到nginx啓動命令

cd /opt/nginx112/sbin
./nginx #啓動
./nginx -s stop #關閉
./nginx -s reload # 平滑重啓 ,修改了nginx.conf以後,能夠不重啓服務,加載新的配置
或者  /opt/nginx112/sbin/nginx -s reload  # 絕對路徑平滑重啓

6 nginx的目錄結構

 

7 nginx配置文件詳解

#定義nginx工做進程數
worker_processes  5;
#錯誤日誌
#error_log  logs/error.log;
#http定義代碼主區域
http {
    include       mime.types;
    default_type  application/octet-stream;
    #定義nginx的訪問日誌功能
    #nginx會有一個accses.log功能,查看用戶訪問的記錄
    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;
    sendfile        on;
    keepalive_timeout  65;
    #開啓gzip壓縮傳輸
    gzip  on;
    #虛擬主機1  定義一個 鬥魚網站 
    server {
        #定義nginx的訪問入口端口,訪問地址是  192.168.11.37:80
        listen       80;
        #定義網站的域名www.woshidouyu.tv
        #若是沒有域名,就填寫服務器的ip地址  192.168.11.37
        server_name  www.woshidouyu.tv;
        #nginx的url域名匹配
        #只要請求來自於www.woshidouyu.tv/111111111
        #只要請求來自於www.woshidouyu.tv/qweqwewqe
        #最低級的匹配,只要來自於www.woshidouyu.tv這個域名,都會走到這個location
        location / {
            #這個root參數,也是關鍵字,定義網頁的根目錄
            #以nginx安裝的目錄爲相對路徑  /opt/nginx112/html 
            #能夠自由修改這個root定義的網頁根目錄
            root   html;
            #index參數定義網站的首頁文件名,默認的文件名
            index  index.html index.htm;
        }
        #錯誤頁面的優化(只要是遇到前面4系列的錯誤,就會直接跳轉到相對目錄下的40x.html頁面)
        error_page  400 401  402  403  404   /40x.html;
    }
}
View Code

 

8 跑一個鬥魚網站出來

修改本身本地的host文件
路徑以下:
        C:\Windows\System32\drivers\etc
 server {
        listen       80;
        server_name  www.qishi2douyu.com;
        #access_log  logs/host.access.log  main;
        location / {
            root   /opt/qishi2douyu/;
            index  index.html index.htm;
        }
​
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
​

 

4. nginx多虛擬主機的配置

1 在192.168.12.56服務器上,跑3個網站出來(須要在本地文件host中添加相應的IP地址)

www.qishi2douyu.com

www.qishi2huya.com

www.qishi2jd.com

配置文件以下:

server {
        listen       80;
        server_name  www.qishi2douyu.com;
        #access_log  logs/host.access.log  main;
        location / {
            root   /opt/qishi2douyu/;
            index  index.html index.htm;
        }
​
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen 80;
        server_name www.qishi2huya.com;
        location / {
            root   /opt/qishi2huya/;
            index  index.html index.htm;
        }
​
    }
    server {
        listen 80;
        server_name www.qishi2jd.com;
        location / {
            root   /opt/qishi2jd/;
            index  index.html index.htm;
        }
​
    }
​

2 分別在/opt目錄下建立qishi2douyu、qishi2huya、qishi2jd這三個目錄

分別在目錄下建立index.html

3 平滑重啓nginx

/opt/nginx112/sbin/nginx -s reload

 

 

nginx錯誤頁面優化

1 修改配置文件

vim /opt/nginx112/conf/nginx.conf
在www.qishi2douyu.com虛擬主機下添加如下內容(server代碼塊下)
​
error_page  400 401 402 403 404   /40x.html;
        location = /40x.html {
            root /opt/qishi2douyu/;
        }
​

 

2 在/opt/qishi2douyu/目錄下建立40x.html, 把淘寶的錯誤頁面源代碼拷貝過來

vim 40x.html

 

3 平滑重啓nginx

4 隨便訪問一個不存在的頁面

http://www.qishi2douyu.com/sladfj243

5 就能夠看到咱們配置的錯誤頁面

 

5. nginx訪問日誌功能

1 打開nginx配置文件nginx.conf

vim /opt/nginx112/conf/nginx.conf

 

2 修改配置文件, 啓用日誌功能

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;

3 平滑重啓nginx

4 瀏覽器訪問192.168.12.56

5.查看訪問記錄

tail -f /opt/nginx112/logs/access.log 

6. nginx限制IP訪問

 

 

 

7. nginx代理功能

生活中的代理:

要想去租房:

租客 —> 中介 —>房東

代購, 海淘

 

正向代理

 

反向代理

 

nginx反向代理

1 準備兩臺機器

192.168.12.56   # 內部的django服務器
192.168.12.77   # 代理服務器
請求數據: windows   ——>   192.168.12.77   ——>   192.168.12.56
返回數據: windows   <——   192.168.12.77   <——   192.168.12.56

 

2 修改代理服務器192.168.12.77的配置文件

vim /opt/nginx112/conf/nginx.conf

 

 

 

 

 

8. nginx負載均衡

 

nginx負載均衡配置

1 準備三臺機器

1. nginx負載均衡器(192.168.12.77)
2 另外兩臺應用服務器(192.168.12.56 + 192.168.12.65)

 

2 先確保兩臺應用服務器可以正常訪問

http://192.168.12.56
http://192.168.12.65:8001

3 配置負載均衡器(192.168.12.77)

修改配置文件
vim /opt/nginx112/conf/nginx.conf
​
worker_processes  1;
​
#error_log  logs/error.log;
events {
    worker_connections  1024;
}
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;
    sendfile        on;
    keepalive_timeout  65;
    #gzip  on;
​
    upstream qishi2_xiaowei {
       server 192.168.12.56;
       server 192.168.12.65 weight=5;
    }
​
    server {
        listen       80;
        server_name  www.qs.com;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://qishi2_xiaowei;
        }
​
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

 

 

 

相關文章
相關標籤/搜索