1.gnginx下載下傳與安裝
1.1下載下傳
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
複制
1.2安裝
1.2.1解壓縮
# cd 到下載下傳目錄中
tar -zxvf nginx-1.12.0
複制
1.2.2安裝
# cd 到解壓目錄裡面
./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module
複制
1.2.3執行編譯和安裝
# 執行完上一步
make && make install
複制
1.2.4檢查安裝是否成功,一定存在下面四個檔案夾,少一個都是失敗
6.在/opt/nginx1-12/ 安裝好nginx的目錄,找到一個sbin的檔案夾,找到nginx的啟動指令,然後啟動nginx服務
# 檢查nginx安裝後的目錄,ll /opt/nginx1-12
drwxr-xr-x 2 root root 333 12月 6 09:32 conf 配置檔案存放的目錄, nginx.conf這個檔案就是nginx的主配置檔案
drwxr-xr-x 2 root root 40 12月 6 09:32 html 存放網頁根目錄的檔案夾,存放了index.html **.html **.gif **.jpg
drwxr-xr-x 2 root root 6 12月 6 09:32 logs 日志目錄
drwxr-xr-x 2 root root 19 12月 6 09:32 sbin nginx啟動腳本目錄
複制
1.2.5運作nginx的相關指令
./sbin/nginx # 直接啟動 nginx 服務
./sbin/nginx -s stop # 關閉 nginx 服務
./sbin/nginx -s reload # 平滑重新開機(修改了nginx配置檔案,不重新開機服務就加載配置且生效)
../sbin/nginx -t # 檢測nginx.conf 配置檔案的文法正确性
複制
1.2.6檢查運作 nginx
2.nginx通路多域名配置
2.1編輯 nginx 配置檔案
vim ./conf/nginx.conf
複制
# 多虛拟主機的配置
# (複制多個 server )
1.修改nginx底下的conf/nginx.conf ,修改資訊如下
server {
listen 80;
server_name www.test1.com;
location / {
# 該服務的網頁檔案在 /data/test1 下
root /data/test1;
# 預設通路網頁 index 檔案可自己編輯
index test-index.html;
}
}
server {
listen 80;
server_name www.test2.com;
location / {
# 該服務的網頁檔案在 /data/test2 下
root /data/test2;
# 預設通路網頁 index 檔案可自己編輯
index test2-index.html;
}
}
複制
2.完成上述配之後
../sbin/nginx -t #檢測文法
../sbin/nginx -s reload #平滑重新開機
複制
2.2編輯 Windows 的 host 檔案
# 寫入到本地dns解析檔案,由于我是在windows中通過浏覽器通路,應該在windows的hosts檔案中添加記錄
# hosts檔案就是一個本地dns(就是将域名轉化成ip位址)強制解析的檔案
# windows的hosts檔案就在這裡:C:\Windows\System32\drivers\etc\hosts ,寫入如下資訊
# 虛拟機的 ip
192.168.1.162 www.test1.com
192.168.1.162 www.test2.com
複制
3.nginx狀态子產品功能
1.在 nginx.conf 的 server 中,添加一個參數即可
server {
listen 80;
server_name www.test2.com;
location / {
# 該服務的網頁檔案在 /data/test2 下
root /data/test2;
# 預設通路網頁 index 檔案可自己編輯
index test2-index.html;
}
# 在server 裡面添加這個即可
location /status {
stub_status on;
}
}
複制

4.nginx通路日志功能
1.編輯 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;
複制
2.log_format 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
複制
3.tail -f ./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" "-"
複制
5.nginx的location配置動态靜态資源
# location存在于 nginx.conf 的 server 中
# 一個 server 可以配置多個 location
複制
5.1動态資源請求,一般就是預設 location 配置
# 我的請求發給nginx的時候,nginx不做處理,直接傳回給django
# www.xxx.com/login
# www.xxx.com/register
location / {
uwsgi_pass http:0.0.0.0:8000;
}
複制
5.2靜态資源請求
# 如果你想請求圖檔資源,就直接丢給nginx去做處理
# ginx處理靜态資源更為優秀
# lias 給location配置一個檔案工作目錄
# 使用待定
# www.xxx.com/xxx.jpg
location ~* \.(gif|jpg|jpeg|mp4)$ {
alias /data/static/;
}
複制
6.nginx正向反向代理的概念
# 正向代理
# 代理的是用戶端
複制
# 反向代理
# 代理的是服務端
複制
6.1反向代理設定
server {
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://192.168.1.162; # 動态請求直接轉發給 該ip;
}
複制
7.nginx負載均衡的簡單使用
7.1環境準備
# 環境準備,準備3台伺服器
192.168.1.161 nginx入口主機
192.168.1.162 應用伺服器1
192.168.1.163 應用伺服器2
複制
7.2關閉所有的防火牆
7.3配置
7.3.1在nginx入口主機裡配置 nginx.conf
1.修改配置檔案nginx.conf ,寫入如下配置
# 定義負載均衡池名字叫做 mydjango
upstream mydjango {
# 池子中存放2個伺服器,預設輪訓方式排程伺服器
server 192.168.1.162:8000;
server 192.168.1.163:8000;
# 也可以根據權重配置設定通路率
# 被分發的機率是 30%
# server 192.168.1.162:8000 weight=3;
# 被分發的機率是 70%
# server 192.168.1.163:8000 weight=7;
}
# root參數定義網頁的根目錄,可以寫在虛拟主機内,局部變量
# 如果寫在server标簽外,就是全局變量
root html;
# 虛拟主機1
server {
listen 80;
# 通路域名
server_name www.xxx.com;
location / {
# 當請求發送到www.xxx.com的時候,比對到 /
# 轉到上方負載均衡池
proxy_pass http://mydjango;
# 包含文法參數,将一個配置檔案添加到目前虛拟主機生效,這個檔案要手動建立
# 這個proxy_params檔案建立在/opt/nginx1-12/conf底下
include proxy_params;
}
}
複制
7.3.1主機 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;
複制
7.3.2部署應用伺服器
# 配置 192.168.1.162 的應用伺服器1
1.準備一個flask代碼,運作
pip3 install flask
2.準備代碼 myflask.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "<h1>我是伺服器1</h1>"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)
3.啟動應用伺服器
python3 myflask.py
# 配置 192.163.1.163 的應用伺服器2
1.準備一個flask代碼,運作
pip3 install flask
2.準備代碼 myflask.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "<h1>我是伺服器2</h1>"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)
3.啟動應用伺服器
python3 myflask.py
複制
7.3.3.通過通路nginx負載均衡器入口,檢視負載均衡 是否正常配置設定,預設是輪訓方式
# 通路自己的nginx負載均衡的ip位址,檢視結果
複制