NGINX負載均衡,動靜分離,反向代理,日志切割

NGINX負載均衡配置:

1.在/usr/local/nginx/conf下新建一個conf配置文件(名字隨便取),這里以fzjh.conf為例,當然你也可以備份nginx.conf之后,直接對nginx.conf進行編輯.

user nobody;

worker_processes? 4;

events {

? ? worker_connections? 10240;

}

http {

? ? upstream demo{

? ? ?#配置ip_hash,添加該配置后,系統會自動記錄用戶第一次訪問后被分配的服務器,然后在接下來的所有訪問中,該用戶都只能被分配到第一次訪問時訪問的服務器,對所有用戶都是如此,當然這樣并不影響負載均衡,依然可以負載均衡,只是犧牲了一定的負載均衡效果.

? ? ? #ip_hash;

? ? ? server 115.239.211.112; #這里為集群的服務器Ip,集群服務器中的內容應該保持一致,這里為了演示,選了不同內容的服務器,以便看的出來.

? ? ? server 140.205.135.3 weight=2;//可以設置權值,權值越大,分配到的幾率越大,權值不設置的話默認為1.

? ? }

? ? server{

? ? ? ? listen 8089;#監聽的端口,可以自己指定

? ? ? ? server_name? www.laohan1.com;#這里的虛擬主機指向的域名,可以在windows中配置hosts實現.

? ? ? ? location /{

? ? ? ? ? proxy_pass http://demo;#指定反向代理到哪個服務器組,一定要與前面upstream的name保持一致.

? ? ? ? }

? ? }

}

以上便是負載均衡和反向代理的配置,動靜分離只需要在Location中添加配置過濾,這里引用阿里云官方的配置方法,非常直觀,備用.

案例:分離動態頁面和靜態頁面?

主機s100上配置一個Nginx

upstream statics{?

server s101:80 weight=1; #訪問配置了靜態頁面的nginx?

server s102:80 weight=1; #訪問配置了靜態頁面的nginx?

server s103:80 weight=1; #訪問配置了靜態頁面的nginx?

}?

upstream tomcats{?

server s101:8080 weight=1;#訪問tomcat?

server s102:8080 weight=1;#訪問tomcat?

server s103:8080 weight=1;#訪問tomcat?

}?

server{?

listen 80;?

server_name s100;?

access_log off;?

location ~* /.(png|html|js|css)$ {?

proxy_pass http://statics;?

#所有以.png .html .js .css結尾的url進入此路徑?

}?

location / {?

proxy_pass http://tomcats;?

#其它url進入此路徑?

}?

}?

主機s100,s101, s102上分別配置nginx 和 tomcat(略)

server{?

listen 80;?

server_name s101;?

location / {?

root html; #存放了靜態頁面的根目錄?

index index.html index.htm; #主頁?

}?

}

詳情可以參考阿里云:https://www.aliyun.com/jiaocheng/125695.html?spm=5176.100033.1.13.hNcx0X


日志切割:?

1.手動切割: 先將原來的日志文件備份 mv access.log 20180612.log,備份為當前的日期即可. 然后使用kill -USR1 +PID 重新開啟新的日志

2.自動切割:

2.1在logs文件夾下通過touch cutlog.sh新建cutlog.sh文件,并編輯:vi cutlog.sh,編輯里面內容如下:

D=$(date +%Y%m%d) #獲取當前日期

mv /usr/local/nginx/logs/access.log ${D}.log #將原來的日志文件備份,重命名為今天的日期

kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #重新開啟記新的日志

2.2通過crontab(類似于java中的定時器)來定時執行cutlog.sh文件:

crontab -e(新建一個定時執行的任務)?

59 23 * * * /bin/bash /usr/local/nginx/logs/cutlog.sh(代表在每天的23:59執行該任務)

創建好了可以通過crontab -l來查看是否創建成功.

附crontba時間的格式:

基本格式 :

*  *  *  *  *  command

分 時 日 月 周 命令

第1列表示分鐘1~59 每分鐘用*或者 */1表示

第2列表示小時1~23(0表示0點)

第3列表示日期1~31

第4列表示月份1~12

第5列標識號星期0~6(0表示星期天)

第6列要運行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重啟apache。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容