十分钟学习nginx
啟動
nginx重啟
nginx -s reopen停止
nginx -s stop熱加載
./nginx -s reload測試修改配置文件是否正常
nginx -t默認配置文件位置
/usr/local/nginx/conf/調整Nginx基本配置
/usr/local/nginx/conf/nginx.conf自定義的Nginx配置放到哪里
/usr/local/nginx/servers也可以自定義只要放被include就可以
nginx安全退出
./nginx -s quit負載均衡
1.輪詢2.權重3.fair4.url_hash 5.ip_hash
1、輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
upstream backserver {server 192.168.0.14;server 192.168.0.15; }2、weight
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的
情況。
權重越高,在被訪問的概率越大,如上例,分別是30%,70%。
3、ip_hash
上述方式存在一個問題就是說,在負載均衡系統中,假如用戶在某臺服務器上登錄了,那么該用戶第二次請求的時候,因為我們是負載均衡系統,每次請求都會重新定位到服務器集群中的某一個,那么*已經登錄某一個服務器的用戶再重新定位到另一個服務器,其登錄信息將會丟失,這樣顯然是不妥的*。
我們可以采用**ip_hash*指令解決這個問題,如果客戶已經訪問了某個服務器,當用戶再次訪問時,會將該請求通過哈希算法,自動定位到該服務器*。
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決*session的問題*。
4、fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backserver {server server1;server server2;fair; }5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個(對應的)后端服務器,后端服務器為緩存時比較有效。
upstream backserver {server squid1:3128;server squid2:3128;hash $request_uri;hash_method crc32; }在需要使用負載均衡的server中增加
proxy_pass http://backserver/; upstream backserver{ ip_hash; server 127.0.0.1:9090 down; (down 表示單前的server暫時不參與負載) server 127.0.0.1:8080 weight=2; (weight 默認為1.weight越大,負載的權重就越大) server 127.0.0.1:6060; server 127.0.0.1:7070 backup; (其它所有的非backup機器down或者忙的時候,請求backup機器) }max_fails :允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
fail_timeout:max_fails次失敗后,暫停的時間
配置實例:
配置文件結構
性能在全局
虛擬主機
網站訪問量大,需要負載均衡。然而并不是所有網站都如此出色,有的網站,由于訪問量太小,需要節省成本,將多個網站部署在同一臺服務器上。
例如將兩個網站部署在同一臺服務器上,兩個域名解析到同一個IP地址,但是用戶通過兩個域名卻可以打開兩個完全不同的網站,互相不影響,就像訪問兩個服務器一樣,所以叫兩個虛擬主機。
server {listen 80 default_server;server_name _;return 444; # 過濾其他域名的請求,返回444狀態碼 } server {listen 80;server_name www.aaa.com; # www.aaa.com域名location / {proxy_pass http://localhost:8080; # 對應端口號8080} } server {listen 80;server_name www.bbb.com; # www.bbb.com域名location / {proxy_pass http://localhost:8081; # 對應端口號8081} }在服務器8080和8081分別開了一個應用,客戶端通過不同的域名訪問,根據server_name可以反向代理到對應的應用服務器。
虛擬主機的原理是通過HTTP請求頭中的Host是否匹配server_name來實現的,有興趣的同學可以研究一下HTTP協議。
另外,server_name配置還可以過濾有人惡意將某些域名指向你的主機服務器。
總結
以上是生活随笔為你收集整理的十分钟学习nginx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gin-vue-blog自建博客
- 下一篇: linux关于防火墙的一些知识