天天看點

day108&day109部分-Linux安裝和配置nginx1.gnginx下載下傳與安裝2.nginx通路多域名配置3.nginx狀态子產品功能4.nginx通路日志功能5.nginx的location配置動态靜态資源6.nginx正向反向代理的概念7.nginx負載均衡的簡單使用7.3配置

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;
            }
            
			}           

複制

day108&day109部分-Linux安裝和配置nginx1.gnginx下載下傳與安裝2.nginx通路多域名配置3.nginx狀态子產品功能4.nginx通路日志功能5.nginx的location配置動态靜态資源6.nginx正向反向代理的概念7.nginx負載均衡的簡單使用7.3配置

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位址,檢視結果           

複制